簡體   English   中英

Java枚舉值表示java.lang類

[英]Java Enum Value represent java.lang class

我試圖創建一個程序來創建它自己的數據庫類型的東西(只是因為我想要一些額外的東西來做),但我遇到了一個小麻煩。 當我嘗試為表的值設置值時,顯然必須檢查它是否是正確的類型。 在我的Value類中,我具有setValue函數:

public void setValue(Object value){
    ValueType t = getColumn().getType();
    if(value instanceof t){
        // Is the correct type.
    }
    this.value = value;
}

其中ValueType是可用值類型的Enum。 這是課程:

public enum ValueType {

    STRING, INTEGER, BOOLEAN, FLOAT

}

這樣就行了:

if(value instanceof t){

IntellIJ Idea說t是一個未知的類。 因此,我試圖使其成為t表示StringInteger 感謝您的時間和幫助。

您可以在枚舉中添加以下方法:

public enum ValueType {
    STRING, INTEGER, BOOLEAN, FLOAT;

    public boolean isInstance(Object obj) {
        // Generate a class name from enum name
        String className = "java.lang."+name().substring(0, 1)+
                               name().substring(1).toLowerCase(Locale.ENGLISH);
        try {
            // Try to resolve this class and check the supplied object type
            return Class.forName(className).isInstance(obj);
        } catch (ClassNotFoundException e) {
            return false;
        }
    }
}

現在您可以編寫if(t.isInstance(value))

但是我建議將Class對象存儲在枚舉中,如下所示:

public enum ValueType {
    STRING(String.class), INTEGER(Integer.class), BOOLEAN(Boolean.class), FLOAT(Float.class);

    private Class<?> clazz;

    ValueType(Class<?> clazz) {
        this.clazz = clazz;
    }

    public boolean isInstance(Object obj) {
        return clazz.isInstance(obj);
    }
}

JSONException:值

[英]JSONException: Value <!DOCTYPE of type java.lang cannot be converted to JSONObject

暫無
暫無

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

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