both methods have same erasure,yet not overrides the other[일반적인 형식 지우 기 및 재 업로드 및 덮어 쓰기 문제]

코드 부터 볼 게 요.
public class Father {
    void test(Object o){}
}
class Son extends Father{
     void test(T o){}//    !
}

이 코드 는 컴 파일 오 류 를 알려 줍 니 다.both methods have same erasure,yet not overrides the other.
이 오 류 는 두 가지 방법 이 유형 을 지 운 후에 같은 원생 형 매개 변수 목록 을 가지 고 있 지만 다른 방법 을 덮어 쓸 수 없다 는 뜻 이다.
일반적인 형식 은 컴 파일 된 후에 형식 을 지우 고 원생 형식 만 남 습 니 다.매개 변수 목록 의 T 형식 은 Object 로 컴 파일 되 지만 Signature 가 있 습 니 다.
두 test 방법 은 같은 바이트 코드 를 가지 고 있 지만 유형 매개 변수 정 보 는 새로운 서명(signature)속성 으로 클래스 모드 에 기 록 됩 니 다.JVM 은 클래스 를 불 러 올 때 이 서명 정 보 를 기록 하고 실행 할 때 반 사 를 통 해 사용 할 수 있 습 니 다.
이 로 인해 이 방법 은 부모 클래스 test 방법 을 덮어 쓰 는 방법 도,test 방법 으로 다시 불 러 올 수도 없 게 되 었 다.

좋은 웹페이지 즐겨찾기