답변:
m(new String[]{"blah", "hey", "yo"});
Draemon이 맞습니다. varargsm
를 사용하는 것으로 선언 할 수도 있습니다 .
void m(String... strs) {
// strs is seen as a normal String[] inside the method
}
m("blah", "hey", "yo"); // no [] or {} needed; each string is a separate arg here
void m(String... strs, Integer... intgrs)
예를 들어.
void m(Integer i, Double d, String... str)
(String ... strs)
결과를 List 인라인으로 사용하려면 다음과 같이 할 수 있습니다.
Arrays.asList(new String[] { "String1", "string2" });
Arrays.asList("string1", "string2", ...)
List
가 type[]
있는 단일 요소 로 끝납니다 type
. 예를 들면 Arrays.asList([some ints])
A의 결과 List<int[]>
.
set
반환 된 것을 호출 List
하면 배열이 수정됩니다.
이니셜 라이저없이 최신 Java로 어레이를 직접 작성할 수 있습니다. 귀하의 예는 이제 유효합니다. 어쨌든 매개 변수의 이름을 지정하는 것이 가장 좋습니다.
String[] array = {"blah", "hey", "yo"};
또는
int[] array = {1, 2, 3};
이 경우 이 인라인에, 당신은 유형을 선언해야합니다 :
functionCall(new String[]{"blah", "hey", "yo"});
또는 varargs (가변 인수)를 사용하십시오.
void functionCall(String...stringArray) {
// Becomes a String[] containing any number of items or empty
}
functionCall("blah", "hey", "yo");
Java 개발자가 향후 암시 적 초기화를 허용 할 수 있기를 바랍니다.
Kotlin은 배열 작업을 훨씬 쉽게 해주었습니다 . 대부분의 유형의 경우 그냥 사용 arrayOf
하면 암시 적으로 유형이 결정됩니다. 아무것도 비워 두지 마십시오.
arrayOf("1", "2", "3") // String
arrayOf(1, 2, 3) // Int
arrayOf(1, 2, "foo") // Any
arrayOf<Int>(1, 2, 3) // Set explict type
arrayOf<String>() // Empty String array
프리미티브에는 유틸리티 기능이 있습니다. 아무것도 비워 두지 마십시오.
intArrayOf(1, 2, 3)
charArrayOf()
booleanArrayOf()
longArrayOf()
shortArrayOf()
byteArrayOf()
이미 a를 가지고 Collection
배열을 인라인으로 변환하려면 다음을 사용하십시오.
collection.toTypedArray()
배열 유형을 강제해야하는 경우 다음을 사용하십시오.
array.toIntArray()
array.toLongArray()
array.toCharArray()
...
doSomething({"blah", "hey", "yo"})
. 원래 질문에 대한 것이 었습니다.
배열 초기화 구문이 간결하고 유연하다는 것을 추가하고 싶습니다. 나는 그것을 코드를 사용하여 코드에서 데이터를 추출하고 더 유용한 곳에 배치합니다.
예를 들어, 나는 종종 다음과 같은 메뉴를 만들었습니다 :
Menu menu=initMenus(menuHandler, new String[]{"File", "+Save", "+Load", "Edit", "+Copy", ...});
이를 통해 메뉴 시스템을 설정하기위한 come 코드를 작성할 수 있습니다. "+"는 이전 항목 아래에 해당 항목을 배치하기에 충분합니다.
"menuFile, menuFileSave, menuFileLoad, ..."와 같은 메소드의 이름을 지정하고이를 반사적으로 바인딩하여 (다른 대안이 있음) 메소드 이름 지정 규칙으로 menuHandler 클래스에 바인딩 할 수 있습니다.
이 구문은 놀랍도록 간단한 메뉴 정의와 매우 재사용 가능한 "initMenus"메소드를 허용합니다. (그래서 작성하는 것이 항상 즐겁고 몇 분 + 몇 줄의 코드 만 필요하기 때문에 재사용하지 않아도됩니다).
코드에서 패턴을 볼 때마다 이와 같은 패턴으로 바꿀 수 있는지 확인하고 배열 초기화 구문이 얼마나 간결한 지 항상 기억하십시오.
다른 옵션은 org.apache.commons.lang3에서 ArrayUtils.toArray를 사용하는 것입니다
ArrayUtils.toArray("elem1","elem2")
Draemon이 말했듯이 Java가 인라인 배열에 가장 근접한 것은 new String[]{"blah", "hey", "yo"}
그러나 당신이 좋아하는 일을 할 수있는 깔끔한 트릭이있다
array("blah", "hey", "yo")
유형이 자동으로 추론됩니다.
인라인 배열 및 컬렉션 유형을 허용하도록 Java 언어를 향상시키는 유용한 API를 개발하고 있습니다. 자세한 내용은 Google 프로젝트 Espresso4J 또는 여기를 확인 하십시오.