この方法は、テーブルベースのノートを設定し-Java

    ほとんど同じ方法を使用して、フィールドのための方法の説明に記載された方法のテーブルとフィールドのテーブルと同様に、クラスファイルの格納フォーマット、同じテーブルのフィールドとメソッド・テーブルの構造は、順番にアクセスフラグ(access_flags)を含む、名前インデックス( name_index)、記述子インデックス(descriptor_index)、セット属性テーブル(属性)、いくつかの表6-11。これらのデータ項目の意味は、アクセスフラグが異なるだけで、利用可能なオプションの設定属性テーブル、また非常に似ています。

    揮発性キーワードとキーワード過渡方法は変更することができないので、アクセスフラグテーブル方法はACC_VOLATILE標識とACC_TRANSIENTフラグないからです。対照的に、同期、ネイティブ、strictfpのとabstracthiamキーワードは、方法を変更することができ、アクセスフラグテーブル方法はACC_SYNCHRONIZED、ACC_NATIVE、ACC_STRICTTFPとACC_ABSTRACTフラグを付加します。メソッドテーブルは、フラグおよび値の全ては、以下の表を参照します。

     

 

    疑いの読者があるかもしれません、フラグ、名前のインデックス、インデックス記述子明確にアクセスできるメソッドの定義が、メソッド内のコードはどこ行きますか?内部の「コード」と呼ばれるプロセスの属性セット、データ項目の属性テーブルに格納され、コンパイルされたコードは、バイト命令属性テーブルにコンパイルされたJavaコード内のメソッドは、ほとんどのクラススケーラブルなファイル形式です。

   サブクラスで親クラス・メソッドは、(オーバーライド)を上書きしない場合は、セットに対応するテーブル内のフィールドは、メソッドテーブルは、親クラスから収集方法情報に表示されません。しかし、再び、となりコンパイラによって自動的に追加する方法があるかもしれない、最も古典的には、クラスのコンストラクタ「<clinit>」メソッドとインスタンスコンストラクタ「の<init>」方法です。

   Java言語では、元の単純な方法と同じ名前を持つことに加えて(オーバーロード)メソッドをオーバーライドするだけでなく、異なると元のメソッドのシグネチャを必要としておく必要があり、署名機能は、各パラメータ定数の方法であって、戻り値が署名に含まれていないので、インタビューの中で、Java言語は、既存のオーバーロードされたメソッドを補完するために、異なる戻り値のみに依存することはできませんので、フィールドシンボルのプールは、参照の設定します。しかし、クラスファイル形式で、署名範囲の多数限り、2つの記述子ではなく、正確に同じ方法が共存することができるされています。これは2つの方法が同じ名前とシグネチャを持っていますが、戻り値が異なる場合、合法的にクラスファイルに共存可能であることを意味します。

おすすめ

転載: blog.csdn.net/helianus/article/details/92077195