实例化一个具体IMPL如果我有一个名为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.
那么我该如何使用一个字符串来实例化Fruit
结核我想要?