未知实现类的通用工厂

8 浏览
0 Comments

未知实现类的通用工厂

假设有两个接口:

public interface FruitHandler
{
    setFruit(T fruit);
    T getFruit();
}
public interface Fruit
{
}

现在我想要一个工厂来创建 `FruitHandlers`(例如 `AppleHander`,`OrangeHandler`,...),但是 `FruitHandlerFactory` 对于这两个接口的实现类并不知道(就像在 Java 参数化泛型静态工厂中所说)。`FruitHandlerFactory` 应该按照以下方式工作(其中 `OrangeHandler` 实现了 `FruitHandler`,`Orange` 实现了 `Fruit`):

FruitHandlerFactory fhf = new FruitHandlerFactory();
OrangeHandler fh = fhf.create();
Orange orange = (Orange)fh.getFruit();

这应该是工厂的样子:

public class FruitHandlerFactory
{
    public FruitHandler create()
    {
        FruitHandler fh = new A();   //<--- ERROR
        fh.setFruit(new B());
        return fh;
    }
}

我遇到了这个错误:

The type A is not generic; it cannot be parameterized with arguments 

顺便问一下:是否可以将 `create()` 方法设为静态方法?

0