>  Q&A  >  본문

java - getMethod 的第二个参数是null和new Class[]{}的区别?

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

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

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

天蓬老师天蓬老师2744일 전960

모든 응답(2)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-18 10:50:53

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

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

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

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:50:53

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

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

    으아아아

    회신하다
    0
  • 취소회신하다