我有一个小问题。我写了一个函数,它应该为对象列表生成表(它可以是Date或自定义的一个或哪个)。这个函数的参数包括"列表列表"和"列出标题"。所以,这就是问题,为什么这一行
if (value.getClass().isInstance(Date.class) ...
不执行,即使我打印value.getClass()时也是如此:class java.util.Date。还有一个问题,如何检查"值"列表?非常感谢提前:)
以下是代码的一部分:
for (Object o : list) {
List<String> atributes = new ArrayList<String>();
for (java.lang.reflect.Field field :o.getClass().getDeclaredFields()) {
field.setAccessible(true);
Object value = field.get(o);
if (value != null) {
if (value.getClass().isInstance(Date.class)) {
atributes.add(convertDateToString((java.util.Date) value));
}
atributes.add(value.toString());
}
} ...
答案 0 :(得分:3)
您误导Class#isInstance
,如果Date.class
是value.getClass()
的实例,则返回true:
确定指定的Object是否与此Class表示的对象分配兼容。此方法是Java语言
instanceof
运算符的动态等效项。如果指定的Object参数为非null,则该方法返回true,并且可以强制转换为此Class对象表示的引用类型,而不会引发ClassCastException。否则返回false。
相反,你想要:
if(value instanceof Date)
或
if(Date.class.isInstance(value))
答案 1 :(得分:3)
检查对象是否是某个类的实例的正确方法是使用“instanceof”语句。
所以,你应该这样做:
Array
希望这会对你有所帮助。
答案 2 :(得分:0)
value.getClass().isInstance(Date.class)
询问类型为Date.class
的{{1}}是否是与Class
类分配兼容的类的实例。这是value
,除非false
是value
或Class
的实例。
改为使用operator Object
:
instanceof