【发布时间】:2011-03-09 13:59:24
【问题描述】:
我希望生成一些包含以下内容的基类
class Container<T extends Containee>
{
T containee;
public T getContents(){return containee;}
public void setContents(T contents){ containee = contents; containee.setContainer(this); }
}
class Containee<T extends Container>
{
T container;
public T getContainer(){return container;}
public void setContainer(T container){this.container = container;}
}
这里有一个循环定义问题,我认为我可以使用通配符来缓解
class Container<T extends Containee<?>>
class Containee<T extends Container<?>>
除了编译器抱怨containee.setContainer(this)。我已经破解了一些可以编译超类的临时解决方案,但没有任何东西可以用于子类,例如
class Foo extends Container<Bar>
class Bar extends Containee<Foo>
泛型教程和常见问题解答似乎没有与此相关的任何明显内容。如何使用泛型表达这种关系?
谢谢
【问题讨论】:
-
我之前问过同样的问题,简短的回答是泛型是不可能的,请参阅:stackoverflow.com/questions/2567595/…
标签: java generics data-structures