programing

어레이를 인라인으로 선언할 방법이 있습니까?

goodsources 2022. 8. 7. 16:53
반응형

어레이를 인라인으로 선언할 방법이 있습니까?

strings 배열을 인수로 사용하는 메서드 m()이 있다고 가정합니다.전화를 걸 때 이 어레이를 인라인으로 선언할 수 있는 방법은 없습니까?

String[] strs = {"blah", "hey", "yo"};
m(strs);

이것을 한 줄로 대체하고 절대 사용하지 않을 이름 있는 변수를 선언하지 않아도 될까요?

m(new String[]{"blah", "hey", "yo"});

라라드요.mvarargs를 복용하는 경우:

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

다른 방법으로는 결과를 목록인라인으로 하는 경우 다음과 같이 할 수 있습니다.

Arrays.asList(new String[] { "String1", "string2" });

이니셜라이저 없이 현대 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 답변

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()

Collection어레이를 인라인으로 변환하려면 다음과 같이 하십시오.

collection.toTypedArray()

어레이 유형을 강제 적용해야 하는 경우 다음을 사용합니다.

array.toIntArray()
array.toLongArray()
array.toCharArray()
...

어디서든 메서드를 만들 수 있습니다.

public static <T> T[] toArray(T... ts) {
    return ts;
}

그럼 쓰세요

m(toArray("blah", "hey", "yo"));

더 보기 좋게.

어레이 초기화 구문은 매우 간결하고 유연하다는 점을 덧붙이고 싶습니다.코드로부터 데이터를 추출해, 보다 사용하기 쉬운 장소에 배치하기 위해서 많이 사용하고 있습니다.

예를 들어 다음과 같은 메뉴를 자주 만들었습니다.

Menu menu=initMenus(menuHandler, new String[]{"File", "+Save", "+Load", "Edit", "+Copy", ...});

그러면 메뉴 시스템을 설정하기 위해 come 코드를 작성할 수 있습니다."+"는 이전 항목 아래에 해당 항목을 배치하도록 지시하기에 충분합니다.

menuFile, menuFileSave, menuFileLoad 등의 메서드에 이름을 붙여 반사적으로 바인드함으로써 메서드 명명 규칙에 따라 menuHandler 클래스에 바인드할 수 있습니다(다른 대안이 있습니다).

이 구문을 사용하면 ANSOLLY의 간단한 메뉴 정의와 매우 재사용 가능한 "initMenus" 메서드를 사용할 수 있습니다.(하지만, 쓰는 것은 항상 즐겁고, 몇 분 + 코드 몇 줄이면 되기 때문에, 굳이 재사용할 필요는 없습니다).

코드에 패턴이 있는 경우는, 이러한 것으로 대체할 수 있는지를 확인해 주세요.또, 어레이 초기화 구문이 얼마나 간결하게 되어 있는지를 항상 기억해 주세요.

기타 옵션은 org.apache.commons.lang3에서 ArrayUtils.toArray를 사용하는 것입니다.

ArrayUtils.toArray("elem1","elem2")

Draemon이 말했듯이 Java가 인라인 어레이에 가장 가까운 것은new String[]{"blah", "hey", "yo"}하지만 여러분이 이런 것들을 할 수 있게 해주는 깔끔한 요령이 있습니다.

array("blah", "hey", "yo")유형을 자동으로 유추합니다.

저는 Java 언어를 인라인 배열과 컬렉션 유형을 가능하게 하는 유용한 API를 개발했습니다.자세한 내용은 구글 프로젝트 에스프레소4J 또는 여기를 참조하십시오.

언급URL : https://stackoverflow.com/questions/1154008/any-way-to-declare-an-array-in-line

반응형