名前付きのクラスがある場合Widget
、次のコードで新しいクラスを作成できます (多かれ少なかれ):
Class<?> widgetClass = Class.forName("Widget");
Widget widget = (Widget)widgetClass.newInstance();
しかし、インターフェース、Fruit
、およびいくつかの具体的な実装 ( Apple
、 、Orange
などKiwi
) がある場合はどうなるでしょうか。私が試してみると:
Class<?> fruitClass = Class.forName("Apple");
Fruit fruit = (Fruit)fruitClass.newInstance();
エラーが発生します:
果物は型に解決できません。
次のように明示的なキャストを削除すると:
Fruit fruit = fruitClass.newInstance();
別のエラーが発生します。
タイプの不一致: capture#2-of から変換できませんか? フルーツへ。
Fruit
では、どのように String を使用して、必要な適切なconcretion をインスタンス化するのでしょうか?