는 다음과 같은 방법 서명 고려 :개체 배열
public fooMethod (Foo[] foos) { /*...*/ }
및
public fooMethod (Foo... foos) { /*...*/ }
설명 : 전자 인수로 푸 - 객체의 배열을 - fooMethod(new Foo[]{..})
- 후자 동안 Foo 타입의 임의의 양의 인수를 취해 메소드 -내의 Foo : s 배열로 제공합니다.
Java가 정의되어 있으면 Java가 적합을 던져서 그것이 중복 메소드라고 주장합니다. 나는 몇 가지 형사 작업을 수행했으며 첫 번째 선언은 Foo 객체의 명시 적 배열을 필요로한다는 것을 알아 냈습니다. 그리고 그 방법을 호출하는 유일한 방법입니다. 두 번째 방법은 실제로 임의의 양의 Foo 인수를 받아 들일뿐만 아니라 Foo 객체의 배열을 받아들입니다.
그래서 질문은 후자의 방법이 더 유연 해 보이기 때문에 첫 번째 예제를 사용할만한 이유가 있습니까? 아니면 중요한 것을 놓친 것입니까?
자바를 모르면 어둠 속에서 찌르는 듯하다. 그러나 나는 첫 번째가 약간 효율적이라고 가정 할 것이다. 왜냐하면 : a) 아마도 하나의 포인터 만 통과 할 것이고, b) 당신은있을 것이다. 하나의 포인터를 메모리의 연속 부분에 전달합니다. –
@monoxide : 아니요, 두 형식 모두 해당하는 호출 바이트 코드를 생성합니다. 두 형식 모두 전달할 배열을 작성해야합니다. –
두 번째 형식은 첫 번째 구문 구문 설탕입니다. fooMethod (new Foo (1), new Foo (2))는 fooMethod (new Foo (new foo (1), new foo (2))와 동일합니다. –