Eclipseのマニアックな保存アクション
Eclipseの保存アクションで、importの編成とか、ソースの整形辺りは使う人も多いかと思います。
が、Eclipseの保存アクションには他にも追加アクションが用意されています。
中々面白いものもあるので、紹介していきたいと思います。
どこから設定するか
設定>Java>エディタ>保管アクション>追加アクション>構成
から設定できます。
forループを拡張forループに変更する
こんな感じです。
String[] a = { "hoge", "fuga", "piyo" };
for (int i = 0; i < a.length; i++) {
String s = a[i];
System.out.println(s);
}
///変換後
for (String s : a) {
System.out.println(s);
}
i をループ内で利用している場合や、i=0から始まらない場合などは変換しない中々頭の良いやつです。
が、絶妙に残念なことにListなどについては変更してくれません。
確かに拡張forループに渡せるものはIterableの継承クラスなので、
厳密には配列のような単純変換をして100%挙動を保証は出来ません。
ただ、今更配列を使ってforループを回す機会なんてほとんどないので、多分設定してもほとんど役に立つことはないでしょう。悲しい。
関数型インターフェースインスタンスに変換
javaのラムダ式は匿名クラスと相互変換できますが、
これをsaveAction時にどちらかに統一する設定です。
使うとしたらラムダ式に変換の方でしょうか。
ただ、「匿名クラスを使用」の方を選択した上で、StreamAPIをガリガリ使っているコードで
SaveActionを起こすとコードが一気に増殖して見た目的に楽しいです。
PredicateとかConsumerとかBiFunctionとか普段意識せずに書いている無名クラスがたくさん見られます。
実用性があるのかと言われると皆無ですが。
不要なコード>冗長な型変数を除去
変数をnewした場合などの型宣言で、自動的にダイヤモンド演算子を使ってくれます。
ここまで実用性に乏しい機能ばかり紹介してきましたが、
これはそれなりに使えるかと思います。
Eclipseのコードアシストは
List<String> l = new ArrLi//ここでコードアシストを使うと
List<String> l = new ArrayList<String>();//こうなる
こんな感じにダイヤモンド演算子を使ってくれませんが、これをONにしておくとSaveActionで消してくれます。
(どうせなら最初からやれと言いたいところですが)