Top


定義場所(file name)

hotspot/src/share/vm/oops/instanceKlass.cpp

説明(description)

// lookup a method in all the interfaces that this class implements

名前(function name)

methodOop instanceKlass::lookup_method_in_all_interfaces(Symbol* name,
                                                         Symbol* signature) const {

本体部(body)

  {- -------------------------------------------
  (1) 実装している全てインターフェース(スーパーインターフェースも再帰的に含む)に対して, 
      Klass::lookup_method() を順に呼び出していき, 対象のメソッドを探す.
      見つかれば, その時点で結果をリターン.
      最後まで見つからなければ, NULL をリターン.
      ---------------------------------------- -}

      objArrayOop all_ifs = instanceKlass::cast(as_klassOop())->transitive_interfaces();
      int num_ifs = all_ifs->length();
      instanceKlass *ik = NULL;
      for (int i = 0; i < num_ifs; i++) {
        ik = instanceKlass::cast(klassOop(all_ifs->obj_at(i)));
        methodOop m = ik->lookup_method(name, signature);
        if (m != NULL) {
          return m;
        }
      }
      return NULL;
    }

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