如果我有一个名为的类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 fruit = fruitClass.newInstance();
我得到一个不同的错误:
类型不匹配:无法从 capture#2-of 转换?到水果。
那么如何使用 String 来实例Fruit
化我想要的正确混凝土呢?