2011-10-29 4 views
8

새 배열을 메서드로 전달할 수 있으며 여전히 해당 배열에 데이터가 있습니까?Java 배열을 매개 변수로 사용

예를 들어,이 방법은 foo(String[])이고이 번호는 foo(new String[] s = {"String1", "String2"})입니다. 하지만 그건 유효한 Java가 아닙니다.

답변

18

이 (이것은 컴파일에서와 같이 당신이 원하는 것을)는 "유효한 자바 방법"입니다 :

다음
foo(new String[] {"String1", "String2"}); 

이 방법을 변경할 수있는 기회가 있다면, 또한 다음 유효 다음

foo("String1", "String2"); 

: 명시 적으로 배열을 생성하기 위해 다음과 같이

public void foo(String... strings) { 
    // ... 
} 

그런 다음 당신이 필요없이 사용할 수 있습니다 : 당신은 또한 varargs 인수를하는 방법을 변경 고려할 수 있습니다 :

foo("String1"); 

foo("String1", "String2", "String3"); 
,

이상.

+0

어떻게하면 vaue를 얻을 수 있습니까? –

4

로컬 변수 s을 만들고 계속 유지하려는 경우, 메소드 호출 내에서 변수를 선언 할 수 없습니다.

String[] s = {"String1", "String2"}; 
foo(s); 

당신은 호출 내에서 s를 초기화 할 수 있지만, 나는 그렇게 할 이유가 표시되지 않습니다, 플러스 정말 나쁜 같습니다 : 당신은 전화의 외부 먼저 선언해야

String[] s; 
foo(s = new String[] {"String1", "String2"}); 
1

만 값을 전달하려는 더 이상 변수 s이 필요하지 않은 경우,이처럼 수행

foo(new String[] {"String1", "String2"}); 
0

당신은 변수를 선언 할 수는 없지만 배열을 전달할 수 있습니다

foo(new String[] { "String1", "String2" }); 

같은 배열을 나중에 참조하려면 호출하기 전에 선언해야합니다.

0

foo (new String [] { "String1", "String2"})

관련 문제