J2SE 1.4 で書いたやりたいこと Class fooClass = Class.forName("Foo"); Foo fooObject = (Foo)fooClass.newInstance(); これを generics を使ってスマートに書きたい. 案1 Class<Foo> fooClass = (Class<Foo>)Class.forName("Foo"); Foo fooObject = fooClass.newInstance(); キャストが入っている時点で generics をスマートに使っていない. 案2 Class<?> fooClass = Class.forName("Foo"); Foo fooObject = fooClass.newInstance(); コンパイルエラー.? と Foo は互換じゃない. で煮詰まって検索してみたところ