min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

bash のfor文を使ってJavaのファイル名とクラス名を一発で書く

Java楽しい。

f:id:min117:20200115074809j:plain

ただただ書き写してコンパイル通った瞬間が病みつきになる。コンパイル言語すき。気持ち良い。

 

f:id:min117:20200117000527j:plain

 

ところで、Javaソースファイル名public宣言したクラス名を同じにしないとエラーになる。

 

例えば、ソースファイル名をCASPER.javaにしたとしよう。

f:id:min117:20200117000558p:plain

 

ところがpublic宣言したクラス名をMELCHIORしてしまったなら

f:id:min117:20200117001641p:plain

 

コンパイル時にエラーになる。

f:id:min117:20200117001813p:plain

 

これを直すには、ファイル名をMELCHIOR.javaするか、もしくはクラス名のほうをCASPERで宣言しないといけない。どっちでもいいけど間違えやすいしダルい

 

せっかくbashを使ってるのでワンライナーラクする。

 

例えばBALTHASAR.javaという長い名前のソースファイルの中で同じくBALTHASAR というクラスを書くことを考えると、タイプミスをしないためには

$ for i in BALTHASAR; do echo "$i"; echo "$i" >> "$i".java; done

f:id:min117:20200117002458p:plain

としちゃう。

 

あとは vim で開けば

f:id:min117:20200117002605p:plain

 

BALTHASARが居るから

f:id:min117:20200117002648p:plain

 

頭にclassを謳ってあげればOK。

f:id:min117:20200117002756p:plain

vim最高。

 

Eclipseなりの統合環境を覚えるのって最後の最後でよくて、とにかく素でソース書いてったほうが覚えるような気がするんだけど。人それぞれか。

 

せっかくなんで完成されたソースにして

f:id:min117:20200117003125p:plain

 

コンパイルして

f:id:min117:20200117003218p:plain

 

実行

f:id:min117:20200117003248p:plain

println() なんで末尾に改行コードが入るのね。

print()だと入らない。

 

Java楽しい。しばらく書き殴る。