Java でクラス名を取得する
- 
          
            Java で class.getSimpleName()を使用してクラス名を取得する
- 
          
            getName()を使用して匿名クラスのクラス名を取得する
- 
          
            Thread.currentThread().getStackTrace()[1].getClassName()を使用してクラスの名前を取得する
 
このチュートリアルでは、4つのメソッドを使用して Java でクラス名を取得する方法を説明します。Java でクラス名を取得したい場合が多くあります。
Java で class.getSimpleName() を使用してクラス名を取得する
    
これは、クラスの名前を取得するために最もよく使用される方法です。次の例では、2つのクラスがあります。main() メソッドを持つ GetClassName と、別のクラスは ExampleClass です。
GetClassName クラスでは、ExampleClass.class を使用してクラスの情報を取得します。タイプ ExampleClass の Class インスタンスを返します。これで、クラス名のみを文字列として返す classNameInstance を使用して getSimpleName() を呼び出すことができます。
public class GetClassName {
  public static void main(String[] args) {
    Class<ExampleClass> classNameInstance = ExampleClass.class;
    String className = classNameInstance.getSimpleName();
    System.out.println(className);
  }
}
class ExampleClass {
  private void exampleFun() {
    System.out.println("Just a function in a class");
  }
}
出力:
ExampleClass
getName() を使用して匿名クラスのクラス名を取得する
名前のない内部クラスは、匿名クラスと呼ばれます。この例では、クラス名が匿名の場合に取得する方法、またはクラスに匿名クラスがあるかどうかを確認する方法を学習します。以下に、匿名クラスをインスタンス化するためのインターフェース Example を作成します。GetClassName では、インターフェイスを使用して名前なしでクラスをインスタンス化し、関数 printMessage() を実装します。
クラス名を取得するために、example.getClass() を使用しますが、クラスの名前がないため、タイプ Class<?> のインスタンスを取得します。次に、classNameInstace を使用して、クラスの名前を返す getName() を呼び出します。出力が示すように、匿名クラスを表す $1 が追加された親クラス名 GetClassName を取得します。
interface Example {
  void printMessage();
}
public class GetClassName {
  public static void main(String[] args) {
    Example example = new Example() {
      @Override
      public void printMessage() {
        System.out.println("This is an anonymous inner class");
      }
    };
    Class<?> classNameInstance = example.getClass();
    String className = classNameInstance.getName();
    System.out.println(className);
  }
}
出力:
GetClassName$1
Thread.currentThread().getStackTrace()[1].getClassName() を使用してクラスの名前を取得する
最後の例では、Thread クラスを使用して、currentThread() を使用して現在実行中のスレッドを取得します。これにより、スタックダンプとスレッド内のすべての呼び出しにアクセスできます。getStackTrace() はスタック要素の配列を返し、そこから配列の 2 番目の項目を取得し、getClassName() を呼び出して呼び出しのクラス名を取得します。
public class GetClassName {
  public static void main(String[] args) {
    String simpleClassName = Thread.currentThread().getStackTrace()[1].getClassName();
    System.out.println("Class name: " + simpleClassName);
  }
}
出力:
Class name: GetClassName
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn