InstanceClass
다음과 같은 클래스 가 있습니다.
package trials;
public class InstanceClass<T> {
private T num;
public void calculate() {
System.out.printf("%s", num);
}
public T getNum() {
return num;
}
public void setNum(T num) {
this.num = num;
}
public InstanceClass(T num) {
super();
this.num = num;
}
}
그리고 Trial
수업하는 등있는 주요 방법은 다음과 같습니다 :
package trials;
public class TrialClass {
public static void main(String[] args) {
InstanceClass<Integer> my=new InstanceClass<>(2);
InstanceClass<InstanceClass<Integer>> x=new InstanceClass<>(my);
prt(x.getNum());
}
public static <T extends InstanceClass<Integer>> void prt(T q) {
System.out.printf("%s%n",q.getNum());
q.calculate();
}
}
그래서 나는 왜 우리가 prt 메소드의 선언에서 <T extends InstanceClass <Integer >> 대신 <T>를 사용할 수 없는지 알고 싶습니다.
변경하면
public static <T extends InstanceClass<Integer>> void prt(T q)
...에
public static <T> void prt(T q)
컴파일러는 형식 매개 변수가 T
여야 InstanceClass
한다는 것을 알지 못하므로 에서 호출하려는 getNum()
및 calculate()
메서드 가 있는지 알 수 없습니다 prt
.
실제로 컴파일러는 내부에서 호출하려는 메서드가 prt
없는와 관련이없는 클래스의 인스턴스를 포함하여 모든 인수를 메서드 에 전달할 수 있습니다 .InstanceClass
prt
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다