Javaクラスのロードと初期化シーケンスのタイミング

クラスのロードタイミング(5種類)

仮想マシンは、クラスが最初にロードされる次の5つのケースをトリガーします

  1. 遭遇したnewgetstaticsetstaticinvokestaticバイトコード
  2. java.lang.reflectの反射コールに基づく方法を使用してパッケージ
  3. クラスをロードする場合、親クラスをロードするために、その親クラスがロードされていない見つけます
  4. 仮想マシンが起動すると、あなたは(マスタークラスを指定する必要がありmain()、仮想マシンは、このようなロードするようにクラスメソッド)
  5. JDK 1.7動的言語のサポート、java.lang.invoke.MethodHandle最終的な分析結果の例は、ということであるREF_getStaticREF_setStaticREF_invokeStatic場合メソッドハンドル、対応するクラスをロードします

クラスの初期化シーケンス

  1. 親クラスの<clinit>ブロック内のコード
  2. サブクラスの<clinit>ブロックコード
  3. 親クラスの<init>ブロック内のコード
  4. サブクラスの<init>ブロックコード

clinitブロック静的変数静的のブロックを含む
初期化ブロックビルダーとメンバ変数を含むが

公開された19元の記事 ウォンの賞賛0 ビュー5751

おすすめ

転載: blog.csdn.net/weixin_46221133/article/details/104221105