Java 通过反射获取最终的非空字段

Java 通过反射获取最终的非空字段,java,reflection,Java,Reflection,如果给定对象的所有字段不为空,如何从这些对象中获取这些字段? 此代码在f.get(“”)时失败 无法设置最终字符串字段名 当字段为空时 class MyObject { private final String name; private final String uuid; } get的第一个参数应该是对象。因此,f.get(object)是您想要的,而不是f.get(“”),它是从object“”请求字段的值,这不起作用,因为”是java.lang.String的实例,而不是MyO

如果给定对象的所有字段不为空,如何从这些对象中获取这些字段?
此代码在
f.get(“”)时失败

无法设置最终字符串字段名

当字段为空时

class MyObject {
  private final String name;
  private final String uuid;
}

get
的第一个参数应该是对象。因此,
f.get(object)
是您想要的,而不是
f.get(“”
),它是从object
”请求字段的值,这不起作用,因为
java.lang.String
的实例,而不是
MyObject.class

将其更改为System.out.println(f.getName()+“:”+f.get(object));异常消息具有误导性,这是一个老问题。但是,仍然没有理由假设在此上下文中,空字符串是
f.get(…)
的有效输入。
Arrays.stream(object.getClass().getDeclaredFields())
                .forEach(f -> {
                    try {
                        f.setAccessible(true);
                        system.out.println(f.getName() + ":" + f.get(""));
                    } catch (IllegalAccessException e) {
                        e.printStackTrace();
                    }
                });