未知实现类的通用工厂
未知实现类的通用工厂
假设有两个接口:
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() { FruitHandlerfh = new A(); //<--- ERROR fh.setFruit(new B()); return fh; } }
我遇到了这个错误:
The type A is not generic; it cannot be parameterized with arguments
顺便问一下:是否可以将 `create()` 方法设为静态方法?