请问如何判断JAVA反射的invoke调用的方法返回值是null与0?

Class<?> tagClass = tag.getClass();
        for(Field field : tagClass.getDeclaredFields()) {
            
            Method g = tagClass.getMethod("get"+field.getName().substring(0,1).toUpperCase()+field.getName().substring(1));
            
        
            if(g.invoke(tag) != null) {
                System.out.println("Hello");
            }
        }

Tag 模型的字段有String 和int 类型
初始String是null
初始int 是0
在if体,我只判断了不为null
我想要的是怎么判断g.invoke(tag)不为null 与 g.invoke(tag)不等于0,才可以打印Hello
我试过转换(int)g.invoke(tag),但是遇到null值,就控制台报错了.

阅读 6.1k
2 个回答
Object result = g.invoke(tag);
if (result != null) { // 不为 null
    if (result.getClass() == String.class) { // 是 String
        ...
    } else if (result.getClass() == Integer.class) { // 是 int
        ...
    }
}
新手上路,请多包涵

嗯。判断类型,然后再进行转换,与0的值进行比较即可~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题