nullでオーバーロードしてメソッドを呼び出す
Javaにはメソッドのオーバーロード機能があります。
そこでnullを欲しいクラス型にキャストして引数として渡して
クラスの型で呼び出しメソッドを判断し、そのクラスのインスタンスをgetする
ファクトリクラスなんかが作れるみたいです。
class NullOverloadTest {実行結果
public static void main(String[] args) {
Factory f = new Factory();
System.out.println(f.get((ClassA) null).getClass().getName());
System.out.println(f.get((ClassB) null).getClass().getName());
System.out.println(f.get((ClassC) null).getClass().getName());
}
}
class Factory {
ClassA get(ClassA cls) {
return new ClassA();
}ClassB get(ClassB cls) {
return new ClassB();
}ClassC get(ClassC cls) {
return new ClassC();
}
}
class ClassA {}
class ClassB {}
class ClassC {}
ClassAかなりトリッキーな感じですが…なかなか使えるかも?
ClassB
ClassC
しかし、書き方が美しくないですね。うーむ。