> Java > java지도 시간 > Java의 가변 인수(Varargs)가 배열을 인수로 허용할 수 있습니까?

Java의 가변 인수(Varargs)가 배열을 인수로 허용할 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-30 19:36:14
원래의
261명이 탐색했습니다.

Can Java's Variable Arguments (Varargs) Accept Arrays as Arguments?

Java에서 가변 인수가 있는 메서드에 배열을 인수로 전달할 수 있나요?

다음 메서드를 고려하세요.

class A {
  private String extraVar;
  public String myFormat(String format, Object ... args){
    return String.format(format, extraVar, args);
  }
}
로그인 후 복사

의도는 args가 개별적으로 String.format으로 전달되지만 myFormat으로 전달되는 것입니다. args를 Object[]로 취급하면 목표와 충돌합니다.

Java의 Varargs(가변 인수)

Java의 구문 설탕 T...는 T[]에 해당합니다. Java 언어 사양(JLS 8.4.1)에 따르면 최종 형식 매개변수는 지정된 유형의 배열로 간주되는 가변 개수일 수 있습니다. 따라서 가변 계수 방법은 가변 개수의 인수를 허용합니다. 이러한 메소드의 호출에는 형식 매개변수보다 더 많은 실제 인수가 포함될 수 있습니다.

해결책

원하는 동작을 달성하려면 가변 인수가 있는 메소드에 배열을 전달할 수 있습니다. 기본 원칙은 배열의 모든 개체가 개별 인수로 전달된다는 것입니다.

다음은 예시입니다.

public static String ezFormat(Object... args) {
    String format = new String(new char[args.length])
        .replace("", "[ %s ]");
    return String.format(format, args);
}

public static void main(String... args) {
    System.out.println(ezFormat("A", "B", "C"));
    // prints "[ A ][ B ][ C ]"
}
로그인 후 복사

String...은 다음과 같습니다. String[].

Varargs와 동일합니다. 문제

  • Null 전달: Null 값만 사용하여 varargs 메서드를 호출하면 NullPointerException이 발생합니다. 단일 null 값을 전달하려면 new Object[] { null } 또는 (Object) null을 사용하세요.
  • 추가 인수 추가: varargs를 사용하여 배열을 전달할 때 추가 인수를 추가하려면 다음을 생성하세요. 추가 요소를 수용할 새 배열.
  • 프리미티브 배열 전달: Varargs만 참조 유형을 지원합니다. 기본 값을 전달하려면 해당 래퍼 클래스의 배열로 변환하세요.

위 내용은 Java의 가변 인수(Varargs)가 배열을 인수로 허용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿