메서드 invoke 시 3 dot 인수(int ... ints) 타입설정 는 어떻게 처리하는지요?
안녕하세요 기선님!
강의 도중에 웃으실때마다 저도 덩달아 웃게됩니다ㅎ
미리 짜보고 애러나면 같은 애러를 같이 내어주셔서 그때그때 잡아주시거든요 ㅎㅎㅎ
당연 의도하신거라 믿고 열심히 응용하고있어요^^
그래서 저의 의문점은요..ㅎ
"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
아 그렇네요...
.invoke(book, new int[]{1, 2, 3, 4, 5});
너무 툴에 의존한 결과
인텔리제이가 가르키는 getDeclaredMethod 만 주구장창 보고있었네요..
툴은 너무 믿을것은 못되는군요....과유불급을 배웠어요
도움 많이 되었습니다. 감사합니다!!
클래스 로더가 메소드 영역에 저장하는 것은 바이트코드인가요?
1
83
1
실제 개발 단계에서 이 같은 지식들을 적용할 기회가 있을까요?
0
102
1
코틀린 컴파일에 대해서
0
218
1
RuntimeException
0
340
1
Annotation processor에서 element type을 제한했는데도 다른 타입으로 컴파일이 됩니다...이상하게도..
0
399
1
gradle 사용하시는 분 도움
4
763
1
CGLib를 따라 해보면서 문제점이 있으며, 해결법입니다. JDK17입니다.
6
865
0
Spring Data JPA 동적 프록시를 사용 질문
0
419
1
어노테이션 프로세서 활용 예와 관련해 질문 있습니다.
0
503
1
"자바 언어가 플랫폼에 독립적이다" 라는 것에 대해 옳게 이해했는지 궁금합니다!
1
1133
1
'클래스 로더' 강의에서 클래스 로딩을 설명할 때 잘못된 것 같아 질문드립니다.
3
1257
2
metaspace 질문드립니다.
2
394
0
소스컴파일시점에 MagicMojaProcessor가 사용되면 안되는이유
0
423
0
다이나믹 프록시에서 리플렉션이 어떻게 사용되는거죠?
0
468
1
다이나믹 프록시의 단점
0
350
0
new 와 constructor.newInstance();의 차이
0
662
0
두번 실행해야하는 이유
0
472
0
제가 설명한게 맞는지 봐주실 수 있나요?(jvm설명)
0
445
0
JIT 컴파일러와 인터프리터
1
1011
1
Method.invoke()
0
426
1
site 폴더내에 jacoco 폴더가 생기지 않습니다.
0
987
1
메모리 영역의 구조 질문
0
449
1
GC 설명부분 질문드립니다.
0
489
1
jit 와 인터프리터 질문
1
394
1





