Javaにおけるクラスのアクティブリファレンスとパッシブリファレンスの概要

1387 ワード

本稿では,Javaにおけるクラスのアクティブリファレンスとパッシブリファレンスを主に検討し,具体的には以下のように紹介する.
アクティブリファレンス、ここではアクティブリファレンスの5つのシーンを紹介します
1、new、getstatic、putstatic、invokestaticの4つのバイトコード命令に遭遇した場合、クラスが初期化されていないと初期化され、オブジェクトを作成し、静的フィールドを読み取り、設定し、静的メソッドを呼び出す.2、反射3、サブクラス初期化前に親4、mainメソッドを含むクラスを初期化し、仮想マシン起動時にそのクラス5を初期化し、jdkの動的言語サポートを使用する場合(不明)
受動参照:

class SuperClass{
  static{
    syso("super init");
  }
public static int value=123;
}
class SubClass extends SuperClass{
  static{
    syso("sub init")}
}
public class ConstantClass{
    public static final HW="helloworld";
}
public class NotInitialization{
    main(){
    syso( SubClass.value)
    //SuperClass sc[] =new SuperClass[10]
    //syso(ConstantClass.HW);
}}

出力:super init 123、静的フィールドへのアクセスはこのフィールドを直接定義するクラスのみが初期化され、サブクラスは初期化されず、最初の注釈をキャンセルして実行され、出力は一切なく、配列定義参照クラスによってもクラスの初期化はトリガーされませんが、仮想マシンによってobjectクラスから継承されたサブクラスが自動的に生成される初期化が初期化されます.このクラスは配列を表し、配列の属性と方法はすべてこのクラス(length属性とclone()に実現され、2番目の注釈がキャンセルされても出力されず、定数はコンパイル中に定数プールに入れられ、ConstantClass.HWはコンパイル中にNotInitializationクラスの定数プールに入れられ,NotInitializationにはNotInitializationのシンボル参照はない.
まとめ
以上,Javaにおけるクラスのアクティブリファレンスとパッシブリファレンスのすべてについて述べたが,皆さんの役に立つことを願っている.興味のある方は引き続き当駅の他の関連テーマを参照することができます.不足点があれば、伝言を歓迎します.友达の本駅に対する支持に感谢します!