List<br>List<br>의 하위 클래스입니까?
1391 단어 하위 클래스
public class ArrayErr
{
public static void main(String[] args)
{
// Integer
Integer[] ia = new Integer[5];
// Integer[] Number[]
Number[] na = ia;
// , ArrayStoreException
// 0.5 Integer
na[0] = 0.5; // ①
}
}
위 코드는 컴파일할 수 있지만 실행하면 다음 오류가 발생합니다.
Exception in thread "main"java.lang.ArrayStoreException: java.lang.Double at ArrayErr.main(ArrayErr.java:13)
이것은 잠재적인 위험의 일종이다.Java의 초기 디자인에서 Interger[]수 그룹에 Number[]수 그룹에 값을 부여할 수 있도록 허용했는데 이 디자인 이념에는 결함이 존재한다.디자인이 우수한 언어는 강력한 기능을 제공해야 할 뿐만 아니라, 강력한 '오류 알림' 과 '오류 경고' 를 제공해야만 개발자의 실수를 최대한 피할 수 있다.Java에서 Integer[]의 배열을 Number[]에게 값을 부여하는 것은 안전한 디자인이 아니다.
Java 범용의 설계 원칙은 코드를 컴파일할 때 경고가 나타나지 않으면 실행할 때 ClassCastException 이상이 발생하지 않는다는 것이다.이 설계 원칙에 따라 범형은List
List<Integer> iList = new ArrayList<>();
//
List<Number> nList = iList;
또한 우리는 더욱 넓은 의미를 가진 결론을 얻을 수 있다. 만약에 Foo가 Bar의 하위 유형(하위 클래스 또는 하위 인터페이스)이라고 가정하면Foo[]는 여전히Bar[]의 하위 유형이지만 G
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 부모 클래스더 읽 기 계승 관계 에서 부모 클래스 든 하위 클래스 든 이러한 클래스 의 this 는 최종 new 에서 나 온 인 스 턴 스 대상 을 대표 하기 때문에 부모 클래스 에서 this 로 하위 클래스 의 정 보 를 얻...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.