以下のサンプルコードを検討してください
public class Test {
public static void main(String args[]) {
Test t = new Test();
Class c2 = Test.class;
System.out.println(c2);
}
}
Test.class
コンパイル時の Class オブジェクトを静的に評価して返します。構文を見るTest.class
と、変数 class は of のようですtype java.lang.Class and is static and public
。私の質問は、この変数がどこに定義されているかです。Test クラスには存在しません (宣言していないため)、java.lang.Object クラスにもありません。
類似の方法を見ましたpublic final native Class<?> getClass();
。これは にjava.lang.Object
あり、native java method
です。このメソッドは、オブジェクトのランタイム クラスを返します。
だから私の質問は、この public および static クラス変数が定義されている場所は?(間違っている場合は修正してください) また、ネイティブ実装ですか? これはコンパイル時に設定され、静的であるため、クラス インスタンスを作成する必要はありません。これがネイティブ実装である場合でもregisterNatives()
、java.lang.Object のメソッドによって初期化されますか?