簡體   English   中英

如何檢查類是否表示特定的原始類型

[英]How do I check if a class represents a particular primitive type

我需要確定一個特定的類是否是一個特定的原始類型,在我的例子中是一個int 我找到了Class.isPrimitive()方法,但我不需要檢查所有原語,我需要一個特定的。 我注意到類名等於原始名稱,我考慮檢查candidateClass.getName().equals("int") - 但這似乎是一種不好的做法(和“魔法字符串”的使用)。

如何使用 Java API 正確檢查特定的原始類型?

每個基本類型的每個包裝器都提供一個靜態字段,其中包含這些包裝器的基本類型類。 例如: Integer.TYPE

Class.isPrimitive 的文檔提供了有關 Java 中基本類型類實現的信息:

有九個預定義的 Class 對象來表示八種基本類型和 void。 它們由 Java 虛擬機創建,並與它們所代表的原始類型具有相同的名稱,即 boolean、byte、char、short、int、long、float 和 double。 這些對象只能通過以下公共靜態最終變量訪問,並且是此方法為其返回 true 的唯一 Class 對象。

一些代碼供參考:

public class PrimitiveClassTest {
    static class Foo{
       public int a;
    }
    
    public static void main(String[] args) throws NoSuchFieldException, SecurityException {
        Class<?> intClass = Foo.class.getField("a").getType();
        System.out.println("obj.int field class: "+intClass);
        System.out.println("Integer.TYPE class:  "+Integer.TYPE);
        System.out.println("are they equal?      "+Integer.TYPE.equals(intClass));
    }
}

這給出了以下結果:

obj.int field class: int
Integer.TYPE class:  int
are they equal?      true

這可以大大簡化為:

 intClass == int.class

這是有效的,因為Class文檔說:

原始 Java 類型(boolean、byte、char、short、int、long、float 和 double)和關鍵字 void 也表示為 Class 對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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