java - getMethod 的第二个参数是null和new Class[]{}的区别?
天蓬老师
天蓬老师 2017-04-18 10:48:53
0
2
990

在反射方法的时候,如果某方法没有参数
好像有下面两种方法去获得

getMethod(method_name_str, new Class[]{});
或者
getMethod(method_name_str, null);

请问这两种方法有区别吗?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

모든 응답(2)
小葫芦

효과적인 측면에서 Class 클래스의 getMethod 메소드의 경우 이 두 매개변수 사이에는 차이가 없습니다.
getMethod의 소스 코드를 볼 수 있습니다. getMethod을 레이어별로 호출한 후 다음 방법을 사용합니다.

이 메소드에는 메소드의 매개변수를 일치시키는 데 사용되는 arrayContentsEq 메소드가 있음을 확인할 수 있습니다.

parameterTypesnull인 경우와 parameterTypes가 빈 배열(길이 == 0)인 경우의 효과는 다음과 같습니다. same - 이것을 가정합니다. 우리가 얻으려는 메소드 m의 매개변수가 비어 있으면 메소드의 m.getParameterTypes()에서 반환되는 배열(a2)의 길이는 0입니다. a1 == null 또는 a1.length == 0일 때 이를 찾을 수 있습니다. arrayContentsEq 메서드는 All are true을 반환합니다(즉, 일치가 성공함).

大家讲道理

메서드에 매개변수가 없으면 실제로 두 상황 사이에 차이가 없습니다.

getMethod(String name, Class<?>... parameterTypes)의 소스 코드를 추적하면 다음 코드를 찾을 수 있습니다. 여기서 a1은 들어오는 parameterTypes이고 a2name 매개변수에 따라 발견된 Method 인스턴스가 호출하는 method.getParameterTypes()입니다. 🎜>. 프로그램은 a1a2의 비교를 바탕으로 올바른 Method을 반환합니다.

으아아아
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿