java - 자바 - 제네릭 의 장점



특정 Java 제네릭 캐스트에서 유형 안전 경고의 의미는 무엇입니까? (1)

Java가 실제로 제네릭을 사용하는 개체에 런타임에 형식 정보를 저장하지 않기 때문에이 경고가 발생합니다. 따라서 object 가 실제로 List<String> 인 경우 변수에 정의 된 제네릭 형식과 일치하지 않는 목록에서 항목에 액세스 할 때까지 런타임에 ClassCastException 이 없습니다.

이 잘못된 일반 유형 정보와 함께 항목을 목록에 추가하면 더 복잡한 문제가 발생할 수 있습니다. 여전히 목록에 대한 참조를 보유하지만 올바른 일반 유형 정보가있는 코드는 일관성이없는 목록을 갖습니다.

경고를 제거하려면 다음을 시도하십시오.

List<?> list = (List<?>) object;

그러나 컴파일러가 잘못된 유형의 객체를 추가하려고 시도하는지 알 수 없기 때문에 add와 같은 특정 메소드를 사용할 수 없습니다. 위의 상황은 많은 상황에서 작동하지만 add 또는 비슷한 제한 방법을 사용해야하는 경우 Eclipse (또는 SuppressWarning 주석)에서 노란색 밑줄을 겪어야합니다.

Java 경고 의 의미는 무엇입니까?

타입 안전 : Object에서 List <Integer>로 캐스트는 실제로 지워진 타입 List를 검사하고 있습니다.

다음 코드와 같이 일반적인 정보가있는 유형으로 Object를 캐스트하려고하면이 경고가 표시됩니다.

Object object = getMyList();
List<Integer> list = (List<Integer>) object;




type-safety