假设两个接口:通用工厂未知的实现类
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