やっぱり便利に思えないStatic Import.
参考にさせていただきました.→static importってなんの役に立つんだろう?
あれこれ使いどころを考えてみたけど,イマイチ便利さが実感できんなぁ.ま,思ったことをツラツラと.
なんとなく便利かな?と思ったのが,Mix-in.例えば「オレ,POJOだけどTestCase」とか「オレ,POJOだけどAction」みたいなの.
import static junit.framework.Assert.*; public class HogeTest { : public void testFoo() { : assert(xxxx); // オレってTestCaseみたい. }
でも,Static Importしたメンバやメソッドって,外には公開されないのね.なんで,java.lang.System.*
をStatic Importしたクラスが,System
クラスのStaticなメンバやメソッド身に着けるわけではない.
それに「static限定」だし,RubyのMix-inとか明らかに趣が異なる.
import static java.lang.System.*; public class Hage { ...
ってあったとして,Hage.out.println("Hello World");
みたいなことは出来ない.
#逆コンパイルして種明かしをするとよく分かる.
一応,こんなMix-inは便利なのかな?
import static java.util.Arrays.sort; import static java.util.Collections.sort; : public void xxx() { // オレが持ってるsort()はArraysとCollectionsの混ぜ合わせだ. sort(yyy); }
って,追っ手から逃げやすくなるだけのような...
案外,Checkstyleとかに「static import禁止」みたいなルールが追加されんじゃないだろか?
実装者の好みで使われても困るからなぁ.思い切って禁止って言っちゃいたいな.:-D
ps.
Tigerで追加された便利そうな新機能も,よ〜く素振りをしてから使わないと変態コードを大量生産してしまいそうだな.
(追記)ちょうど良い記事見っけ.
→IBM - Japan via t-wadaの日記