我正在研究一个小型数据库系统,因为它似乎是一个有趣的项目并且遇到了数据库列类型的问题。类型返回如下:
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”,我对如何解决这个问题感到非常困惑;任何人都可以伸出援手吗?
答案 0 :(得分:11)
instanceof
运算符需要源代码中的类型名称才能正常工作,而不是Class
实例。
但由于您拥有Class
,因此可以致电Class
's isInstance
method。
确定指定的Object是否与此Class表示的对象分配兼容。此方法是Java语言
instanceof
运算符的动态等效项。
if (c.isInstance(o)) {