List<Object[]> d = new ArrayList<Object[]>();
d.add({"A"});//compile error
Object [] arr = {"A"};//valid
필자는 항상 마지막 두 행이 동등한 작업을 수행하고 유사한 규칙에 의해 규제된다고 생각했습니다.메서드 및 할당에 전달하는 차이 인수
누가 설명 할 수 있습니까?
List<Object[]> d = new ArrayList<Object[]>();
d.add({"A"});//compile error
Object [] arr = {"A"};//valid
필자는 항상 마지막 두 행이 동등한 작업을 수행하고 유사한 규칙에 의해 규제된다고 생각했습니다.메서드 및 할당에 전달하는 차이 인수
누가 설명 할 수 있습니까?
나는 항상 마지막 두 행이 동등하게 작업을하고 유사한 규칙에 의해 규제 생각했다.
틀렸어.
누가 설명 할 수 있습니까?
내가 왜 틀렸는 지 설명 할 수는 없지만 구문을 설명 할 수 있습니다. 최종 줄은 초기화이며 초기화에는 특별한 구문이 있기 때문에 유효합니다. 선언과 과제로 나누면 두 번째 줄에있는 과제에서 동일한 오류가 발생합니다. 값에 대한 구문은 Java에 존재하지 않습니다. 첫 번째 경우에
** 선언과 과제로 나눈 경우 두 번째 줄에있는 과제에서 동일한 오류가 발생합니다. ** - 도움이되는 말 – gstackoverflow
메서드에 인수를 전달하는 것이 아닙니다. 올바른 예제와 같은 배열을 초기화하는 동안에 만 {x}
단축형을 사용할 수 있습니다. 다른 곳에서는 유효하지 않습니다. 초기화 후 나중에 인스턴스를 생성해야하는 경우 new int[]
을 사용해야합니다.
int[] a = {1,2}; // OK
int[] b;
b = {1,2}; // compiler error
정답입니다. – gstackoverflow
d.add({"A"});//compile error
[]과 같은 방법 인자 역할을하는 당신은 객체의 새로운 인스턴스를 생성 할 필요가
:
d.add(new Object[]{"A"});
두 번째 경우에, 당신이를 만들 Object의 배열
Object [] arr = new Object[] {"A"};
자바 내가 원래 디자인의 C/C++ 배열 정의와 약간의 호환성을 유지 생각하기 때문에 다음과 같은 작업을 수행 할 수 있습니다 또한 비슷한 일을 할 수 있습니다.
Object [] arr = {"A"};//valid
유형이 이미 알려져 있기 때문에 그렇게 할 수 있습니다. 진행중인 선언이므로 다시 지정하는 것은 불필요합니다. 그러나 유형은 이미 다른 문맥에서 알려져 있지 않으므로 필요합니다. – EJP
어떻게 답변을 찾을 수 있습니까? – gstackoverflow
글쎄, 나는 그저 대답했다. :) 그렇지 않으면 컴파일러 오류가있는 경우 일반 부품을 가져 와서 검색하십시오. 도움이되지 않으면 작동하지 않는 단어를 표현하십시오. 여기에'array initialization'이 있습니다. –
이러한 대답에 더 많은 정보를 추가하기 만하면 d.add (new Object [] { "A"}); 오류없이 작동합니다. –