ホームページ  >  記事  >  Java  >  Javaでクラス名を取得する方法

Javaでクラス名を取得する方法

WBOY
WBOY転載
2023-05-03 16:55:072338ブラウズ

現在実行中のクラス名を取得したい場合、どのように取得すればよいでしょうか?

Class クラスには、次のメソッドがあります。

Javaでクラス名を取得する方法

たとえば、Demo7 クラスがあります。 .java

package pxx.test1;
 
public class Demo7 {
    public static void main(String[] args) {
        Demo7 demo7 = new Demo7();
        System.out.println(demo7.getClass().getName());
    }
}

実行結果:

Javaでクラス名を取得する方法

上記は、このオブジェクトに対して getClass() を直接呼び出して、 Class オブジェクトを呼び出して getName() を呼び出し、実行中のクラス名を取得します。

したがって、クラスがクラスを継承する場合、現在のクラス名と親クラス名を取得する方法

Demo8.java

package pxx.test1;
 
public class Demo8 {
    int num;
    String name;
    public Demo8(){};
}

Demo9.java

package pxx.test1;
 
public class Demo9 extends Demo8 {
    public void test() {
        System.out.println(super.getClass().getName());
    }
    public static void main(String[] args) {
        new Demo9().test();
    }
}

上記では、super を使用して getClass() メソッドを呼び出し、クラス名を取得しました。ここで注意する必要があるのは、super は次の非静的メソッドのみを呼び出すことができるということです。このように super はオブジェクト操作に基づいているため、静的メソッドでは呼び出すことができません。そういえば、ここで親クラスの getClass() を呼び出しているので、親クラスのクラス名を取得したいのですが、

Javaでクラス名を取得する方法

を実行しても、親クラスのクラス名を取得できません。次に、geClass() メソッドを見てみましょう。このメソッドは Object オブジェクト内にあります。

Javaでクラス名を取得する方法

これは、次のようになります。このメソッドは最終的なメソッドであること、つまり、このメソッドは他のクラスによって継承されることはわかりますが、オーバーライドすることはできません。したがって、this.getClass と super.getClass は最終的に Object クラスの getClass メソッドを呼び出し、定義このメソッドの機能は Object の実行時クラスを返すことなので、上記のメソッドは親クラス名の代わりに独自のクラス名を返します。

それでは、親クラスの名前を取得するにはどうすればよいでしょうか?

Class クラスに移動して、次のメソッドを見つけてみましょう:

Javaでクラス名を取得する方法

上記の意味は、次のメソッドを返します。現在の呼び出しクラスの親クラスです。親クラスを取得した後も、getName() を使用して名前を取得できます。上記のコード

package pxx.test1;
public class Demo9 extends Demo8 {
    public void test() {
        System.out.println(super.getClass().getSuperclass().getName());
    }
    public static void main(String[] args) {
        new Demo9().test();
 
    }
}

実行結果:

Javaでクラス名を取得する方法

#このようにして、親クラス

のクラス名を取得します。

以上がJavaでクラス名を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。