다음 코드를 고려하십시오. 클래스 a { 개인 문자열 Extravar; public String myformat (문자열 형식, 개체 ... args) { return string.format (형식, 엑스트라, args); } }
이 예에서 myFormat 메소드는 변수 수의 인수 (... args로 표시)를 취하고 string.format 메소드를 사용하여 문자열을 형식화합니다. 문제는 Args가 개별 인수가 아닌 단일 객체 [] 배열로 취급된다는 것입니다. 이를 해결하기 위해 t ...가 t []. 이를 설명하십시오. 다음 코드 스 니펫은 변수 아티리티 메소드에 인수로 배열을 전달하는 방법을 보여줍니다. 문자열 형식 = new String (new char [args.length]). 교체 ( "\ 0", "[ %s]"); return string.format (형식, args); } public static void main (String ... args) { System.out.println (ezformat ( "a", "b", "c"); // 인쇄 "[a] [b] [c]" }
class A { private String extraVar; public String myFormat(String format, Object... args) { return String.format(format, extraVar, args); } }
변수 Arity Method Gotchas
public static String ezFormat(Object... args) { String format = new String(new char[args.length]).replace("\0", "[ %s ]"); return String.format(format, args); } public static void main(String... args) { System.out.println(ezFormat("A", "B", "C")); // prints "[ A ][ B ][ C ]" }
가 변수 arity 메소드를 전달합니다. 예 :
static void count(Object... objs) { System.out.println(objs.length); } count(null, null, null); // prints "3" count(null, null); // prints "2" count(null); // throws java.lang.NullPointerException!!!
... NullPointerException이 발생합니다. 이를 피하기 위해 널 인수를 별도의 배열 또는 객체로 전달할 수 있습니다.
count(new Object[] { null }); // prints "1" count((Object) null); // prints "1"
가변 아티리티 메소드에 전달되는 배열에 추가 인수를 추가하기 위해 추가 인수를 추가하기 위해 Append () 및 prepend ()와 같은 헬퍼 메소드를 사용하여 배열을 수정할 수 있습니다 :
public static String ezFormat(Object... args) { String format = new String(new char[args.length]).replace("\0", "[ %s ]"); return String.format(format, args); } public static void main(String... args) { System.out.println(ezFormat("A", "B", "C")); // prints "[ A ][ B ][ C ]" }[] append (t []) 최종 int n = arr.length; arr = java.util.arrays.copyof (arr, n 1); arr [n] = 마지막 명소; 반환 ARR; } static
변수 아티리티 메소드는 참조 유형에서만 작동합니다. 자가 옥싱은 프리미티브의 배열에는 적용되지 않습니다. 프리미티브 배열을 전달하려면 먼저 래퍼 유형의 배열로 변환해야합니다.
public static String ezFormat(Object... args) { String format = new String(new char[args.length]).replace("\0", "[ %s ]"); return String.format(format, args); } public static void main(String... args) { System.out.println(ezFormat("A", "B", "C")); // prints "[ A ][ B ][ C ]" }int [] myNumbers = {1, 2, 3}; System.out.println (ezformat (mynumbers)); // 인쇄 "[[I@13C5982]" 정수 [] myNumbers = {1, 2, 3}; System.out.println (ezformat (mynumbers)); // 인쇄 "[1] [2] [3]"
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3