여기 샘플 코드리플렉션을 사용하여 메소드에 varargs 인수가 있음을 알리는 방법은 무엇입니까?
package org.example;
import java.lang.reflect.Method;
class TestRef {
public void testA(String ... a) {
for (String i : a) {
System.out.println(i);
}
}
public static void main(String[] args){
Class testRefClass = TestRef.class;
for (Method m: testRefClass.getMethods()) {
if (m.getName() == "testA") {
System.out.println(m);
}
}
}
}
출력은 따라서 방법의 서명이 문자열의 배열을 취할보고
public void org.example.TestRef.testA(java.lang.String[])
이다.
리플렉션 라이브러리에 어떤 의미가 있습니까?이 메서드는 입니다. 원래은 varargs를 사용하도록 선언 되었습니까?
또한 method.getModifiers()에는 varargs 메소드에 대해 Modifier.TRANSIENT 비트가 설정됩니다. – ILMTitan
@ILMTitan - 왜 주목할 가치가 있는지 모르겠다. 'transient' 수식자는 메서드에서 의미가 없습니다. 해당 클래스 파일 플래그 비트가 다른 컨텍스트의 다른 항목에 사용되므로 비트만 설정됩니다. TRANSIENT 및 VARARGS 비트는 동일한 비트이다. –