第一次发帖,对不起,标题可能是垃圾。我正在尝试使用类型推断,但是在使用工厂模式时却努力使其正常工作,让我扔掉一些代码以使其更加清晰:
private class ParentObject { }
private class ChildObject extends ParentObject { }
private interface Template<T extends ParentObject> {
void doSomething(T object);
}
private class TemplateImpl implements Template<ChildObject> {
public void doSomething(ChildObject object) { }
}
Run Code Online (Sandbox Code Playgroud)
因此,我有一些从Template继承的类,它们对从ParentObject继承的对象做一些事情(我在本文中仅发布了其中一个)。现在,我遇到的问题是,当我尝试生成这些模板类之一时,在尝试执行此操作时,我不断收到“不兼容的类型”错误:
private class Factory {
public <T extends ParentObject> Template<T> generate() {
return new TemplateImpl(); // here is the error
}
}
private class Service {
public <T extends ParentObject> void magic() {
Factory f = new Factory();
Template<T> a = f.generate();
}
} …Run Code Online (Sandbox Code Playgroud)