在 Java 中獲取類名
-
在 Java 中使用
class.getSimpleName()
獲取類名 -
使用
getName()
獲取匿名類的類名 -
使用
Thread.currentThread().getStackTrace()[1].getClassName()
獲取類的名稱
本教程教授如何使用四種方法在 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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn