實例化一個具體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
結核我想要?