> Java > java지도 시간 > 삭제 부분

삭제 부분

Linda Hamilton
풀어 주다: 2024-12-30 15:15:10
원래의
672명이 탐색했습니다.

Erasure (Apagamento de Tipos)

삭제란 무엇인가요?
- 삭제는 Java에서 제네릭을 구현하는 데 사용되는 기술로, 이전 버전의 언어와의 역호환성을 보장합니다.

  • 컴파일하는 동안 모든 일반 유형 정보는 *제거*(또는 "삭제")됩니다.

2. 삭제 사용 동기
기존 코드와의 호환성:

  • Java(JDK 5)에 제네릭을 도입한다고 해서 이전 코드가 무효화되어서는 안 됩니다.
  • 일반 코드와 일반 코드가 모두 원활하게 작동하도록 보장하려면 일반 코드 디자인이 필요합니다.

적절한 강제:

  • 컴파일러는 지정된 인수와의 유형 호환성을 보장하기 위해 강제를 추가합니다.
  • 일반 유형에서 정보 제거:
  • 유형 매개변수는 소스 코드에만 존재하고 런타임에는 존재하지 않습니다.

4. 삭제 사례

  • 일반 코드:
class Gen<T> {
    T ob;

    Gen(T o) {
        ob = o;
    }

    T getOb() {
        return ob;
    }
}

로그인 후 복사
  • 삭제 후 코드(컴파일러가 코드를 변환하는 방법):
class Gen {
    Object ob;

    Gen(Object o) {
        ob = o;
    }

    Object getOb() {
        return ob;
    }
}

로그인 후 복사

참고:

  • 유형 매개변수가 객체로 대체되었습니다.
  • 생성된 코드에는 일반적인 정보가 없습니다.

5. 삭제의 한계
런타임 시 누락된 유형 정보:

  • 제네릭 유형은 소스 코드 메커니즘이며 컴파일 후에는 존재하지 않습니다.

불가능:

  • 런타임에 인스턴스의 일반 유형을 가져옵니다.
  • 일반 유형의 인스턴스를 직접 생성합니다(예: new T()는 허용되지 않음).

6. 실질적인 효과

삭제 설명:

  • 제네릭에 오버로드가 없는 이유: 제네릭 유형만 다른 ​​시그니처가 있는 메서드는 허용되지 않습니다.
  • 제네릭에서 기본 유형을 직접 사용할 수 없는 이유는 무엇입니까(예: Gen은 유효하지 않습니다. Gen을 사용해야 합니다).

컴파일 시간 보안:

  • 타입 정보가 지워지더라도 컴파일러는 컴파일 중에 타입 호환성을 확인합니다.

7. 결론

  • 삭제를 사용하면 이전 버전과의 호환성을 손상시키지 않고 제네릭을 Java에 추가할 수 있습니다.
  • 일부 제한에도 불구하고 제네릭은 컴파일 시 유형 안전성을 제공하는 반면 생성된 코드는 이전 버전의 JVM과 호환됩니다.

위 내용은 삭제 부분의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿