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