假设有两个接口:
现在我想要一个工厂来创建水果处理器(例如
这应该是工厂:
public interface FruitHandler<T extends Fruit>
{
setFruit(T fruit);
T getFruit();
}
public interface Fruit
{
}
现在我想要一个工厂来创建水果处理器(例如
AppleHandler
,OrangeHandler
,...),但是FruitHandlerFactory
不知道如何实现接口的类的必要信息(就像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()
方法定义为静态的?