2014-03-26 166 views
0

我如何檢查給定參數是Primitive Data Type如何檢測原始數據類型?

public static void main(String[] args) { 
    if (isPrimitive("test")) { 
     System.out.println("True"); 
    } 
    if (isPrimitive(1)) { 
     System.out.println("True"); 
    } 
} 

public static boolean isPrimitive(Object o) { 
    // Here what would I do ? 
} 
+1

你不能給你目前的代碼,因爲作爲參數'isPrimitive'是'Object' ,'1'將被自動裝箱到'Integer'。否則你比較'.getClass()'和'Integer.class'等 – fge

+0

這段代碼的目的是什麼? – Bob

回答

1

當你呼叫isPrimitive(1)auto-boxing將被執行。 這意味着isPrimitive(Object o)獲得一個Integer,而不是int。 在這種方法中,不可能知道參數是否是原始數據類型。 更重要的是,Java是一種靜態語言,因此開發人員應該知道它的數據類型

編號:Java7 Auto Boxing

1

您可以製作一些接受不同類型參數的重載方法。你可以做一些只接受原始包裝的接口,一個接受一個字符串,一個接受一個對象。對於接受String的接口,你可以使用不同類型的原始包裝類來測試parseXXX()方法是否正常工作。接受Object作爲參數的方法總是返回false,因爲重載的方法應該覆蓋所有的基本類型。所以你不能調用此方法與參數

0

原始數據類型不擴展對象1.

+0

其實你可以用參數1調用這個方法,因爲在Java中有自動裝箱... –

1

你可以不知道用參數Object o的方法,因爲如果你傳遞了一個int, char, boolean他們將autoboxed到包裝類,在你永遠不會知道它的方法是自動裝箱原語或包裝類(Integer, Long, Boolean...)