> Java > java지도 시간 > 원시 유형 및 레거시 코드

원시 유형 및 레거시 코드

Linda Hamilton
풀어 주다: 2025-01-03 21:03:45
원래의
969명이 탐색했습니다.

Tipos brutos e código legado

원시 유형은 레거시(제네릭 이전) 코드와 JDK 5에 도입된 제네릭 간의 호환성을 허용하기 위해 도입되었습니다. 이는 점진적인 전환을 허용하지만 타협합니다 타입 안전.

정의 및 특징
원시 유형:

  • 유형 인수를 지정하지 않고 일반 클래스를 사용하세요. 예:
Gen raw = new Gen(new Double(98.6)); // Tipo bruto criado

로그인 후 복사

호환성:

원시 유형 변수는 모든 일반 객체를 수신할 수 있으며 그 반대의 경우도 마찬가지입니다.
컴파일 시간 유형 검사가 없으므로 런타임 오류가 발생할 수 있습니다.

코드 예시

// Classe Gen com suporte a genéricos
class Gen<T> {
    T ob; // Declara um objeto do tipo T

    Gen(T o) { // Construtor
        ob = o;
    }

    T getob() { // Retorna o objeto ob
        return ob;
    }
}

// Demonstração de tipos brutos
class RawDemo {
    public static void main(String[] args) {
        // Usando genéricos corretamente
        Gen<Integer> iOb = new Gen<>(88);
        Gen<String> strOb = new Gen<>("Generics Test");

        // Criando um tipo bruto
        Gen raw = new Gen(new Double(98.6));
        double d = (Double) raw.getob(); // Funciona, mas perde segurança de tipos
        System.out.println("value: " + d);

        // Erros de tempo de execução com tipos brutos
        // int i = (Integer) raw.getob(); // Erro de tempo de execução!

        // Atribuição de tipo bruto para genérico
        strOb = raw; // Correto, mas perigoso
        // String str = strOb.getob(); // Erro de tempo de execução!

        // Atribuição de genérico para tipo bruto
        raw = iOb; // Correto, mas perigoso
        // d = (Double) raw.getob(); // Erro de tempo de execução!
    }
}

로그인 후 복사

Raw Type 사용의 위험
유형 안전성 부족:

  • 원시 유형을 제네릭에 할당하거나 그 반대로 할당하면 런타임 오류가 발생할 수 있습니다.

예:

strOb = raw; // Perigoso: raw contém Double, mas strOb espera String
raw = iOb; // Perigoso: raw agora contém Integer, mas coerção pode falhar

로그인 후 복사

런타임 예외:

컴파일 시 불일치를 감지할 수 있는 방법이 없습니다.
예:

int i = (Integer) raw.getob(); // Erro porque raw contém Double

로그인 후 복사

비인증 경고:

  • javac 컴파일러는 안전하지 않은 방식으로 사용된 원시 유형을 감지하면 경고를 생성합니다.

경고를 생성하는 예

Gen raw = new Gen(new Double(98.6)); // Tipo bruto
strOb = raw; // Atribuição insegura

로그인 후 복사

추천
원시 유형 사용을 피하세요.

  • 제네릭이 제공하는 안전성을 활용하려면 항상 유형 인수를 사용하세요.

예:

Gen<Integer> iOb = new Gen<>(88); // Correto e seguro

로그인 후 복사

기존 코드를 주의 깊게 다루십시오.

  • 제네릭 이전 코드를 제네릭과 통합할 때 엄격한 검사와 테스트를 추가하세요.

위 내용은 원시 유형 및 레거시 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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