Что я хочу:
Вместо метода "Object" в методе "public void insertDog (Object object)" я бы хотел универсальный шаблон, расширяющий класс, расширяющий абстрактный класс "DogKennel".Например, если я создаю класс с именем «RetrieverDogKennel», который расширяет «DogKennel», я бы хотел, чтобы параметр метода «insertDog (...)» класса «RetrieverDogKennel» принимал только объекты «Retriever».Хотя этот метод не будет выглядеть как «insertDog (Retriever 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);