[英]Determining a 'type' in Java
我是Java的新手,Java中有沒有一種方法可以告訴您對象的類型?
例如在Python中,如果您鍵入
type(34)
它將返回int
type('abc')
將返回string
我一直在到處尋找,但找不到解決方法。 有什么幫助嗎?
非常感謝。
instanceof
運算符是執行運行時類型檢查的最簡便方法:
if (someObject instanceof String) {
// It's a string
}
另外,在任何實例上,您都可以使用getClass
,它為您提供了對象類型的Class
實例。
Class c = someObject.getClass();
Class
實例將具有一個getName
方法,您可以調用該方法來獲取名稱的字符串版本(以及許多其他方便的方法)。
您可以使用.class
從類型名稱中獲取Class
對象,例如:
Class stringClass = String.class;
正如彼得·勞瑞(Peter Lawrey)在評論中指出的那樣,所有這些假設都假設您正在處理對象引用,而不是原始對象。 無法對基元進行運行時類型檢查,但是沒關系,因為與對象引用(您的編譯時聲明可能是Object
)不同,您始終知道由於該聲明而導致的原始類型。 真正出現的只是對象類型。
如果發現自己在Java代碼中進行了大量顯式類型檢查,則可能表明結構/設計問題。 在大多數情況下,您不需要在運行時檢查類型。 (當然也有例外。)
基本上,我們可以使用方法覆蓋來實現我們的目標
class GetType {
void printType(byte x) {
System.out.println(x + " is an byte");
}
void printType(int x) {
System.out.println(x + " is an int");
}
void printType(float x) {
System.out.println(x + " is an float");
}
void printType(double x) {
System.out.println(x + " is an double");
}
void printType(char x) {
System.out.println(x + " is an char");
}
}
public static void main(String args[]) {
double doubleVar = 1.5;
int intVar = 7;
float floatVar = 1f;
GetType objType = new GetType();
objType.printType(doubleVar);
objType.printType(intVar);
objType.printType(floatVar);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.