• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

메서드 invoke 시 3 dot 인수(int ... ints) 타입설정 는 어떻게 처리하는지요?

20.08.29 10:29 작성 조회수 508

1

안녕하세요 기선님!
강의 도중에 웃으실때마다 저도 덩달아 웃게됩니다ㅎ
미리 짜보고 애러나면 같은 애러를 같이 내어주셔서 그때그때 잡아주시거든요 ㅎㅎㅎ
당연 의도하신거라 믿고 열심히 응용하고있어요^^
그래서 저의 의문점은요..ㅎ

"3 dot parameter method invoke" 문장으로
구글링으로  로 찾아보긴 했지만 맘에드는 결과물이 없더라구요..

다중인수 메서드를 invoke 할 경우 

// Book 클래스
public int sum(int ... ints) {
	return Arrays.stream(ints).sum();
}


// App.main()

// 이부분에서 '잘못된 인자 개수 예외' 가 나더라구요..
bookClass.getDeclaredMethod("sum", int[].class);
sum.invoke(book, 1, 2, 3, 4, 5 )


// 예외 핵심구문
Exception in thread "main" java.lang.IllegalArgumentException: wrong number of arguments


그래서 메서드 파라미터가  3 dot 인수의 경우는

int[].class 가 아니고 어떻게 지정해야 할까요?

읽어주셔서 감사합니다.

답변 2

·

답변을 작성해보세요.

1

sum.invoke(book, 1, 2, 3, 4, 5 )

이거 대신에 1, 2, 3, 4,5를 배열에 담아서 넘기셔야되요. sum 메소드를 직접 호출할 때는 몰라도 저기서의 sum은 메소드에 대한 레퍼런스니까 가변인자(...)가 내부에서 배열 타입으로 받아지니까 배열에 담아서 호출해보세요,

0

Truestar님의 프로필

Truestar

질문자

2020.08.29

아 그렇네요...

.invoke(book, new int[]{1, 2, 3, 4, 5});


너무 툴에 의존한 결과
인텔리제이가 가르키는 getDeclaredMethod 만 주구장창 보고있었네요..
툴은 너무 믿을것은 못되는군요....과유불급을 배웠어요
도움 많이 되었습니다. 감사합니다!!