泛型 - ArrayList中toArray()为什么不支持强制类型转换?[Java]
黄舟
黄舟 2017-04-18 10:42:06
0
4
644
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

모든 응답(4)
伊谢尔伦

(T[]) Arrays.copyOf(elementData, size, a.getClass()); 강제 변환은 배열 자체의 타입이 a.getClass()이기 때문에 성공할 수 있습니다.

으아악

Array.newInstance(newType.getComponentType(), newLength)을 통해 생성된 배열 객체(대상 유형)입니다.


String[] y = (String[]) x.toArray()array의 데이터 유형이 Object[]이 아닌 String[]이므로 형변환할 수 없습니다.

伊谢尔伦

StringObject의 하위 클래스이지만 String[]Object[]의 하위 클래스가 아니므로 실제 유형이 StringObject에 대한 참조는 String으로 캐스팅될 수 있습니다. 하지만 Object[]String[]에 강제로 적용할 수는 없습니다. 할당은 하나씩만 사용할 수 있으며 참조를 하나씩 강제로 적용한 다음 복사할 수 있습니다(물론 Arrays.copyOf()를 사용하여 이를 수행할 수 있습니다.

伊谢尔伦

하위 클래스의 값을 다시 하위 클래스

로 변환하는 것이 적법합니다.

Object[]의 값을 String[]으로 캐스팅합니다. 이 동작은 (Integer)(new Object())

과 유사합니다.
阿神

ArrayListE의 일반 유형은 일반 유형이 지정되지 않은 경우 필요하지 않습니다. 예:

으아악

이 경우 두 번째 방법은 적용할 수 없으며 강제 형식 변환을 수행할 방법도 없습니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿