【发布时间】:2019-10-29 13:03:07
【问题描述】:
我想要什么:
代替“public void insertDog(Object object)”方法中的“Object”,我想要一个扩展抽象类“DogKennel”的类的泛型。例如,如果我创建了一个扩展“DogKennel”的名为“RetrieverDogKennel”的类,我希望“RetrieverDogKennel”类的“insertDog(...)”方法中的参数只接受“Retriever”对象。虽然它看起来不像“insertDog(Retriever Retriever)”,但该方法的行为类似于它,只允许在其参数中包含检索器对象。
public abstract class DogKennel
{
public void insertDog(Object object)
{
//does something and the object is not stored
}
}
public class RetrieverDogKennel extends DogKennel
{
public <T extends Retriever> void insertDog(T object)
{
//does something and the object is not stored
}
}
如果您尝试将其他犬种放入 RetrieverDogKennel,我希望这是一个错误。
LabradorDogKennel labradorDogKennel = new LabradorDogKennel();
RetrieverDogKennel retrieverDogKennel = new LabradorDogKennel();
Labrador bullet = new Labrador();
Retriever buster = new Retriever();
Retriever sparky = new Retriever();
//No Error
retrieverDogKennel.insertDog(buster);
//Error
retrieverDogKennel.insertDog(bullet);
【问题讨论】:
标签: java class generics types abstract