複数のオブジェクトの共通の親クラスを求める
推論の元になる引数が複数ある場合、共通の親クラスが使われるのであれぱ、これを使って複数のオブジェクトの共通の親クラスを得ることができるのでは!とひらめいてしまった。
// 引数の共通の親クラスを返す。 static <X> Class<?> test( X... args ) { return args.getClass().getComponentType(); } .... public static void main( String[] args ) { System.out.println( test( "a" ) ); // String System.out.println( test( "", new Object() ) ); // Object System.out.println( test( 1, 1D ) ); // Number System.out.println( test( new IOException(), new RuntimeException() ) ); // Exception }
実行結果です。
class java.lang.String class java.lang.Object class java.lang.Number class java.lang.Exception
おー、ちゃんととれてる。手近にあったJDK1.5.0_09と、JDK1.6.0_07で確認したけどどちらも挙動は同じ。またEclipseでコンパイル&実行した場合も同様でした。テクニックとして使えそうではあるけど、これだ!という使い道は思いつかんなー。んー。