다음 코드가 있습니다.
public class Animal {
public <T extends Animal> void doSomething(T instance) {
//do stuff
}
}
그러나 메소드에 대한 매개 변수는 호출되는 클래스와 동일한 유형이어야합니다. 예를 들어 이것은 유효합니다 :
public class Dog extends Animal {}
public class Cat extends Animal {}
Dog dog1 = new Dog();
Dog anotherDog = new Dog();
dog1.doSomething(anotherDog);
그러나 이것은 유효하지 않습니다.
dog1.doSomething(new Cat());
모든 하위 클래스에서 메서드를 구현하지 않고이를 달성 할 수있는 방법이 있습니까? 하위 클래스가 많고 너무 반복적이기 때문에 그렇게하고 싶지 않습니다.
재정의 클래스를 참조하는 암시적인 방법이 없다고 생각합니다.
설명 된 효과를 갖기 위해 필요한 하위 유형을 동물 자체에 대한 일반 인수로 선언 할 수 있습니다.
public class Animal<T extends Animal<?>> {
public void doSomething(final T instance) {
//do stuff
}
}
public class Dog extends Animal<Dog> {}
public class Cat extends Animal<Cat> {}
그 벌은 실제로 여기에서 어디로 가고 싶은지 상상하기 어렵습니다. 두 마리의 개만 할 수 있지만 두 마리의 다른 동물은 할 수 없지만 같은 코드로 구현할 수있는 메서드는 무엇일까요?
이것은 종종 일반적인 추상베이스 클래스가 장기적으로 도움이되는지 과장하고 싶은 지점입니다. 모든 동물에 대해 구현 코드가 다른 것으로 판명되면 독립 클래스의 공통 인터페이스가 더 나은 옵션 일 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다