在 Java 中獲取類名

Rupam Yadav 2023年10月12日
  1. 在 Java 中使用 class.getSimpleName() 獲取類名
  2. 使用 getName() 獲取匿名類的類名
  3. 使用 Thread.currentThread().getStackTrace()[1].getClassName() 獲取類的名稱
在 Java 中獲取類名

本教程教授如何使用四種方法在 Java 中獲取類名。在很多情況下,我們可能希望在 Java 中獲取類名。

在 Java 中使用 class.getSimpleName() 獲取類名

這是獲取類名最常用的方法。在下面的示例中,我們有兩個類:帶有 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() 返回一個堆疊元素陣列,我們從中獲取陣列的第二項並呼叫 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 Yadav
Rupam Yadav avatar Rupam Yadav avatar

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

相關文章 - Java Class