추상적 인 방법이 있다면
public abstract class Test {
public abstract <T> void method();
}
그런 다음 모든 구체적인 파생 클래스는 <T>
메서드 서명에 강제로 포함됩니다 .
public class Test1 extends Test {
public <T> void method() {
// some code
}
}
이것의 사용 사례는 무엇입니까? 우리는 무엇을 할 수 T
있습니까? 그리고 T
그 추론은 어떻게 얻습니까?
이 상황에서 일반 매개 변수를 가질 이유는 없지만 Java 스펙은이를 금지하지 않습니다.
그 일을 한 사람은 방금 실수를했습니다.
편집하다
추신 : 제네릭 매개 변수가 메서드 서명에 없지만 여전히 유용한 경우를 발견했습니다. (아이디어를 위해 @JimmyB에게 감사드립니다)
두 개의 인터페이스가 있다고 가정하십시오.
interface A {}
interface B {}
또한 다음 서명이있는 두 가지 방법 :
<T extends A & B> T f1();
<T extends A & B> void f2(T t);
그런 다음 다음과 같은 방법을 가질 수 있습니다.
<T extends A & B> void foo() {
T t = f1();
f2(t);
}
제네릭 매개 변수에 대한 제약이 있기 때문에 문제의 방법은 아니지만 얻을 수있는 한 가깝습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다