首頁 >Java >java教程 >如何確定一個物件是否是 Java 中原始值的包裝類型?

如何確定一個物件是否是 Java 中原始值的包裝類型?

DDD
DDD原創
2024-11-02 05:34:30427瀏覽

How to Determine if an Object is a Wrapper Type for Primitive Values in Java?

物件是原始的嗎?

使用物件陣列時,可能需要確定是否有任何元素是原始的類型。 Class.isPrimitive() 方法不提供物件的預期結果,例如範例中的:

int i = 3;
Object o = i;

System.out.println(o.getClass().getName() + ", " +
                   o.getClass().isPrimitive());

,其列印:

java.lang.Integer, false

問題

問題是Object[] 陣列包含引用,而不是基元。因此,Class.isPrimitive() 對於物件總是傳回 false,即使它們代表原始值。

解決方案

確定一個物件是否是一個包裝器原始類型,沒有內建的函式庫函數。但是,可以建立自訂解決方案:

<code class="java">import java.util.*;

public class Test {
    public static void main(String[] args) {
        System.out.println(isWrapperType(String.class));  // false
        System.out.println(isWrapperType(Integer.class)); // true
    }

    private static final Set<Class<?>> WRAPPER_TYPES = getWrapperTypes();

    public static boolean isWrapperType(Class<?> clazz) {
        return WRAPPER_TYPES.contains(clazz);
    }

    private static Set<Class<?>> getWrapperTypes() {
        Set<Class<?>> ret = new HashSet<Class<?>>();
        ret.add(Boolean.class);
        ret.add(Character.class);
        ret.add(Byte.class);
        ret.add(Short.class);
        ret.add(Integer.class);
        ret.add(Long.class);
        ret.add(Float.class);
        ret.add(Double.class);
        ret.add(Void.class);
        return ret;
    }
}</code>

此解決方案使用 HashSet 來儲存包裝器類型。當檢查一個類別是否是包裝器時,該集合用於驗證它是否包含該類別。

以上是如何確定一個物件是否是 Java 中原始值的包裝類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn