java如何创建多个级别的子类,以便参数是子类的参数?
接下来StackOverFlow question假设我想扩展到另一个级别的子类,比如Mallards,我该怎么做
public abstract class Animal <A extends Animal<A>>
{
public abstract A copyAnimal(A animal);
}
public class Duck extends Animal<Duck>
{
@Override
public Duck copyAnimal(Duck duck)
{
return copyOfDuck;
}
}
class Mallard extends Duck<Mallard>
{
public Mallard copyAnimal(Mallard mallard)
{
return copyOfMallard;
}
}
对于Duck子类,一切都很好,但是对于Mallard子类,一切都失败了。我如何用数量不确定的子类来设置它
# 1 楼答案
您只需继续使用类型变量:
然后
是的,很乱
我经常看到这种模式与类的构建器一起使用,这些类被扩展以创建子类的构建器。它把代码弄得一团糟,在我看来,最好避免这样做
如何使用它的示例:
Ideone demo(不做任何事情;只演示编译)