簡體   English   中英

在Java中確定“類型”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM