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와 동일합니다. 문제
위 내용은 Java의 가변 인수(Varargs)가 배열을 인수로 허용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!