考虑以下代码:
public abstract class Animal<A extends Cage<? extends Animal<A>>>
{
private A cage;
public A getCage()
{
return this.cage;
}
public void setCage(final A cage)
{
this.cage = cage;
}
}
public abstract class Cage<A extends Animal<? extends Cage<A>>>
{
private List<A> animals;
public void addAnimal(final A animal)
{
if (animal != null)
{
animal.setCage(this);
if (this.animals == null)
{
this.animals = new ArrayList<A>();
}
this.animals.add(animal);
}
}
}
这些类由其他类进一步扩展。
此代码无法在该行编译
animal.setCage(this);
关于为什么此代码无法编译以及如何修复它的任何想法?我们使用的是 Java 1.6。