假設兩個接口:通用工廠未知的實現類
public interface FruitHandler<T extends Fruit>
{
setFruit(T fruit);
T getFruit();
}
public interface Fruit
{
}
現在我想一個工廠來創建FruitHandlers
(如AppleHander
,OrangeHandler
,...),但FruitHandlerFactory
不知道neccessary關於實施兩個接口的類(如java parameterized generic static factory)。該FruitHandlerFactory
應該以這種方式工作(其中OrangeHandler
實現FruitHandler
和Orange
工具Fruit
):
FruitHandlerFactory fhf = new FruitHandlerFactory<OrangeHandler,Orange>();
OrangeHandler fh = fhf.create();
Orange orange = (Orange)fh.getFruit();
這應該是工廠:
public class FruitHandlerFactory<A extends FruitHandler, B extends Fruit>
{
public FruitHandler create()
{
FruitHandler<Fruit> fh = new A<B>(); //<--- ERROR
fh.setFruit(new B());
return fh;
}
}
我在哪裏得到這個錯誤:
The type A is not generic; it cannot be parameterized with arguments <B>
順便說一句:是否有可能使create()
方法是靜態的?
優秀的問題和偉大的代碼片段來說明。 – sje397 2011-05-23 06:02:10