2017-04-02 3 views
-1
Integer i1 = 1; 
Integer i2 = 2; 

Number arr1[] = {i1, i2}; 

에 할당 할 수 없습니다 속기에 초기화 [] {I1, I2}자바 : 배열은 우리가 이미 알고 있듯이, {I1은 I2가} 새로운 번호에 ​​대한 속기는 객체

하지만 때 이런 식으로 선언 : 유형 불일치 :

Object o = {i1, i2}; //error 

나는 컴파일 오류가 발생했습니다, [다른 한편으로

Object로 정수로 변환 할 수 없습니다

Object arr1 = new Number[]{i1, i2}; 

배열을 Object로 변환 할 수있는 것은 아닙니다.

그리고 나는 이런 식으로 작성하는 경우 : 그것은 또한 괜찮습니다

Number arr2[] = {i1, i2}; 
Object obj = arr2; 

.

제가 궁금해하는 문제는 왜 컴파일 오류가 발생했는지입니다. 또는식이 'Object o = {i1, i2};'의 '{i1, i2}'에 대한 오류 메시지을 보내주었습니다. 배열이 아닌가요?

+0

'객체 arr1;'- 배열의 각 유형 (원시적 배열) ** **이다-A 'Object'). [''java.lang.reflect.Array'] (https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Array.html)의 메소드도 참조하십시오. –

+1

나는 왜 * "형식 불일치 : Integer []에서 Object"*로 변환 할 수 없는지 궁금합니다. "* 오류 :"Object * "에 대한 초기화가 잘못되었습니다. – Gendarme

+0

@Gendarme Eclipse에서 OP 오류가 발생합니다. 별로 의미가 없습니다. – shmosel

답변

4

단축 배열 초기화 프로그램은 배열을 초기화 할 때만 유효합니다. Number arr1[] = {i1, i2};배열Number으로 선언하고 초기화합니다. Object o은 배열이 아닌 단일 객체를 선언합니다. Object o = new Number[] { i1, i2 };으로 작성할 수 있습니다 (예 : 약식이 아닌).

+0

En, 나는 이클립스가 나에게 실수 메시지를 주었다고 생각했다. 배열이 아니기 때문이다. 그러나 나는 확실하지 않다. 감사! – JackyMao

+0

Eclipse에서 "Integer []에서 Object로 변환 할 수 없습니다."라는 표현이 있지만 여기에는 배열이 없습니다. – JackyMao

+0

@JackyMao : ** ** 이클립스가 그런 말을하는 것은 틀린 경우입니다. 'Integer []'에서'Object'로 변환 할 수 있습니다. 배열 초기화자를 사용하여'Object'를 초기화 할 수 없습니다. –

2

{..}은 배열 유형을 선언하고 초기화하기위한 구문 설탕입니다.

Object o = {i1, i2}에는 배열 유형 (사용자가 []을 생략했기 때문에)이 지정되지 않았으므로 컴파일러는 배열임을 알지 못합니다. 즉, 단일 객체이며 오류를 발생시킵니다. . 당신이 가지고 일단

Object o = {i1, i2}; // This is NOT an array type 

Object[] o = {i1, i2}; //This represents an array 

그러나, 배열 객체는 (즉, 하나의 크기를 지정 new 운영자 또는 위의 문법 설탕을 사용하여), 당신은 당신이 그것을 할당 할 수 배열 개체가됩니다 생성 아래와 같은 형태 Object : 새로운 = INT [{1, 2}

Number arr1[] = {i1, i2};//arr1 created & initialized 
Object obj1 = arr1;//arr1 can now be assigned to Object type 

Number arr2[] = new Number[2];//arr2 created (initialized values to null) 
Object obj2 = arr2;//arr2 can now be assigned to Object type 
+0

주요 아이디어는 Crowder와 유사합니다. 고마워! – JackyMao