JavaのInterfaceにstaticメソッドを定義してる風で
どうも、正月テレビ漬けになってたおかげで、Perfumeののっちとかしゆかを逆に覚えてたことに気づいたおっさんです。3人の中ではごりあーちゃんファンです。
ThoughtWorksアンソロジーのドメインアノテーションの章で、JavaのInterfaceをアノテーションの代わりに利用してみるという節があります。でも結局色々な理由があってダメダメなわけです。そのダメダメな理由のうち、Interfaceにstaticメソッドを定義できないというのがあるんですが、これに関しては回避できるような気がしたので、試してみました。
Interfaceには実はstaticなネストクラスを定義することができます。それにメソッドを定義すればやりたい放題です。
public interface Sample { public static abstract class Methods { public static void echo(String echo) { System.out.println(echo); } } }
Methodsがabstractなのは勝手にnewしないで欲しいという気持ちを伝えてるだけです。
使う方は、、
public class Main implements Sample { public void test() { Methods.echo("TSET"); } }
ちなみに、これが役に立つかなーと思って考えてみたけど、、、意外に役に立たないっす。
static import とかenum型とかアノテーションが出てきたので、Interfeceを本来の目的以外に利用するハックは無意味になりましたね。
以上です。