2011-01-14 6 views
2

Java에서 "배열 유형"을 가져올 수 있습니까? Java에서 배열 유형을 가져올 수 있습니까?

나는이 쓸모없는 수입 될 것입니다 알고 있지만 ( java.lang가 자동으로 가져 있지만) 우리는 명시 적으로 java.util.String를 가져올 수 있습니다 또는 현재 컴파일 단위에 정의되고있는 클래스 ...

그것을 할 수 있습니다 이 어리석은 수입품을 만드십시오?

+0

을 다시 작성하십시오. – Nishant

+1

당신은 이것을 어떻게 생각하니? – CoolBeans

+0

호기심 전용. :) –

답변

4

아니요, 배열 유형을 가져올 수 없습니다. 마찬가지로 가져올 수 없습니다 int 또는 double

1

배열은 더 많은 언어로 정의 된 기본 유형입니다. int[] a = new int[5];을 쓸 때, 실제로하는 일은 원시 int 타입을 저장할 수있는 5 개의 메모리 위치를 따로 설정하는 것입니다. 다른 배열 선언에서도 같은 결과가 발생합니다. 즉, java에서 가져올 수 없습니다.

+0

+1 프리미티브를 언급합니다. 가장 원시적 인 타입은'Object'에서 파생 된 버전을 가지고 있다고 덧붙이고 싶습니다. ('int'와'Integer'에 대해서는 http://mindprod.com/jgloss/intvsinteger.html 참조) 마찬가지로, java에는'ArrayList','LinkedList', –

+0

예, Integer, Float, Double이 있으며 원시 유형의 불변 버전이며 객체가 필요한 템플릿이있는 Collections를 만들기 때문에 래퍼 클래스로도 사용됩니다. ArrayList

0

어쨌든 Java에는 단일 배열 유형이 없습니다. 다른 요소 유형에서 작성된 배열 유형은 서로 다릅니다.

String [] stringArray = new String[4]; 
Object [] objectArray = new Object[4]; 
objectArray = stringArray; //This won't work even though individually every String can be cast to Object 
+0

네 말이 맞아. 'List '는'List '(JLS 어딘가에 설명되어있는 매개 변수화 된 유형 속성)과도 호환되지 않기 때문에 당신의 예제에서는 그것을 볼 수 없습니다. 그러나'objectArray.getClass()'는'stringArray.getClass()'와는 다르며, 매개 변수화 된 타입에서는 발생하지 않습니다. –

+0

사실, 나는 parameterezid 클래스를 언급하면서 그것을 복잡하게 만들고 싶지 않았습니다. 내가 추가해야 할 것은 배열 타입을 다른 배열 타입으로 변환 할 수 없다는 것입니다. – biziclop

0

가 불필요 :이 코드를 컴파일하려고하면

그것은이를 쉽게 알 수 있습니다. 유형 T을 이해하면 T[], T[][], T[][][]...이 자동으로 이해됩니다. 이는 컴파일러와 런타임 모두에 해당됩니다. 효과적으로, T을 가져 오면 모두 T[]...을 가져옵니다. T이 클래스 로더에 의해로드 된 후에는 모두 T[]...이 동일한 클래스 로더에 의해로드됩니다.

+0

나는 그것이 불필요하다는 것을 안다. ** ** 가능한지 알고 싶었습니다 **. 그러나 그렇지 않습니다. –

관련 문제