Top


定義場所(file name)

jdk/src/share/classes/java/lang/Class.java

名前(function name)

    private Method getMethod0(String name, Class<?>[] parameterTypes) {

本体部(body)

  {- -------------------------------------------
  (1) まず, このクラスで定義されたメソッドの中を調べる
      (探索処理は privateGetDeclaredMethods() と searchMethods() で行う).
      見つかればそれをリターン.
      ---------------------------------------- -}

            // Note: the intent is that the search algorithm this routine
            // uses be equivalent to the ordering imposed by
            // privateGetPublicMethods(). It fetches only the declared
            // public methods for each class, however, to reduce the
            // number of Method objects which have to be created for the
            // common case where the method being requested is declared in
            // the class which is being queried.
            Method res = null;
            // Search declared public methods
            if ((res = searchMethods(privateGetDeclaredMethods(true),
                                     name,
                                     parameterTypes)) != null) {
                return res;
            }

  {- -------------------------------------------
  (1) 見つからなければ, 次にスーパークラスで定義されたメソッドの中を調べる
      (探索処理は, スーパークラスに対して java.lang.Class.getMethod0() を再帰呼び出しすることで行う).
      見つかればそれをリターン.
      ---------------------------------------- -}

            // Search superclass's methods
            if (!isInterface()) {
                Class<? super T> c = getSuperclass();
                if (c != null) {
                    if ((res = c.getMethod0(name, parameterTypes)) != null) {
                        return res;
                    }
                }
            }

  {- -------------------------------------------
  (1) 見つからなければ, 次にインターフェースで定義されたメソッドの中を調べる.
      (探索処理は, インターフェースに対して java.lang.Class.getMethod0() を再帰呼び出しすることで行う).
      見つかればそれをリターン.
      ---------------------------------------- -}

            // Search superinterfaces' methods
            Class<?>[] interfaces = getInterfaces();
            for (int i = 0; i < interfaces.length; i++) {
                Class<?> c = interfaces[i];
                if ((res = c.getMethod0(name, parameterTypes)) != null) {
                    return res;
                }
            }

  {- -------------------------------------------
  (1) 以上のどこでも見つからなければ, null をリターン.
      ---------------------------------------- -}

            // Not found
            return null;
        }

This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.