class A{}
class B extends A {}
class C extends B {}
class D<C> {
C c = new A(); // COMPILER ERROR
}
유형 삭제 코드가 다음과 같이 된 후 :
class D {
Object c = new A();
}
그래서 여기서 문제는 무엇입니까?
그래서 여기서 문제는 무엇입니까?
첫 번째 문제는 내이다 D<C>
, C
라는 유형 매개 변수를 의미한다 C
, 하지 클래스 C
확장 B
. 다음으로 제네릭을 무시하더라도
C c = new A(); // Invalid
... 컴파일하지 않을 것입니다 ... 대신에 일반적으로 다음과 같습니다.
A a = new C(); // Normally fine - but not if C is a type parameter!
다음을 사용해 보았다고 가정합니다.
D<String> d = new D<String>();
그런 다음 컴파일러에게이 줄이 유효한 것으로 간주하도록 효과적으로 요청합니다.
String c = new A();
그것은 분명히 깨졌습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다