BeanUtils.setProperty() 可以在没有 setter 的情况下设置值吗?

can BeanUtils.setProperty() set value without setter?

我目前正在使用 here 中的示例将我的 ResultSet 映射到自定义 Object。我已经测试了 BeanUtils.setProperty() 并且该对象似乎需要 setter 才能工作。有什么方法可以像 Gson 那样映射值吗?我不想有 public 设置器。

您可以在实体中使用来自 Lombok 库的 @Data 注释。

不可以。

顾名思义BeanUtils处理Java Beans

They are serializable, have a zero-argument constructor, and allow access to properties using getter and setter methods.

(强调我的。)

虽然 BeanUtils 方法的 Javadoc 相当模糊,但在 BeanUtilsBean.setProperty() and PropertyUtilsBean.setSimpleProperty() 的源代码中也可以找到线索。

又见documentation

The Java language provides classes like java.beans.Introspector, which can examine a Java class at runtime and identify for you the names of the property getter and setter methods, [...]. The APIs in the BeanUtils package are intended to simplify getting and setting bean properties dynamically, [...].

(强调我的。)