Если у меня есть класс с именем Widget
то я могу создать новый с помощью следующего кода (более или менее):Java: Инстанцировать конкретный осущ по имени
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 cannot be resolved to a type.
Если удалить явную отливку так:
Fruit fruit = fruitClass.newInstance();
я получаю другую ошибку:
Type mismatch: cannot convert from capture#2-of ? to Fruit.
Так как я могу использовать a Строка для создания экземпляра справа Fruit
Конкреция Я хочу?