如何通过引用类来调用instanceof。

时间:2015-05-19 19:32:13

标签: java

我正在研究一个小型数据库系统,因为它似乎是一个有趣的项目并且遇到了数据库列类型的问题。类型返回如下:

public final DataType getType() {
    return type;
}

这是DataType枚举。

public enum DataType {
    BYTE(Byte.class),
    CHAR(Character.class),
    BOOLEAN(Boolean.class),
    SHORT(Short.class),
    INT(Integer.class),
    FLOAT(Float.class),
    LONG(Long.class),
    DOUBLE(Double.class),
    STRING(String.class);

    private final Class<?> type;

    private DataType(Class<?> type) {
        this.type = type;
    }

    public final Class<?> getReferenceClass() {
        return type;
    }
}

但是,我正在尝试验证插入到列中的对象的类型是否正确。

 public TableEntry put(int columnIndex, Object o) {
    Column column = table.getColumn(columnIndex);
    Class<?> c = column.getType().getReferenceClass();
    if(!(o instanceof c)) {

    }
    return this;
}

Whcih重新调整错误“Unknown class c”,我对如何解决这个问题感到非常困惑;任何人都可以伸出援手吗?

1 个答案:

答案 0 :(得分:11)

instanceof运算符需要源代码中的类型名称才能正常工作,而不是Class实例。

但由于您拥有Class,因此可以致电Class's isInstance method

  

确定指定的Object是否与此Class表示的对象分配兼容。此方法是Java语言instanceof运算符的动态等效项。

if (c.isInstance(o)) {