获取对象的实例?

时间:2015-06-19 00:39:45

标签: java object

我有一个小问题。我写了一个函数,它应该为对象列表生成表(它可以是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());
        }
        } ...

3 个答案:

答案 0 :(得分:3)

您误导Class#isInstance,如果Date.classvalue.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,除非falsevalueClass的实例。

改为使用operator Object

instanceof
相关问题