【发布时间】:2022-01-25 06:28:01
【问题描述】:
我有这个 POJO 类:
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import java.io.Serializable;
@Data
@XmlAccessorType(XmlAccessType.FIELD )
public class FulfillmentOrder implements Serializable {
private static final long serialVersionUID = 1L;
@XmlElement(name="orderNbr")
Integer orderNbr;
public Integer setOrderNumbr(Integer orderNbr) {
this.orderNbr=orderNbr;
return orderNbr;
}
}
我正在尝试从不同的类设置 orderNbr 的值。
FulfillmentOrder fo= new FulfillmentOrder();
Integer orderNum =
fo.setOrderNumbr(89898989);
我正在尝试将我的 XML 输出中 orderNbr 的值更新为 89898,我想使用 @Data 来完成。
但是当我在做fo.setOrderNbr(89898989)时,我得到一个编译时错误,错误:(56, 132) java: 不兼容的类型:void 不能转换为 java.lang.Integer,因为 lombok 返回 void。
`fo.setOrderNbr(89898989) 的任何方式来更新值?
【问题讨论】:
-
这是Java的基础,与Lombok无关。即使是编程的基础知识 - 如果不先为其分配内存,您就无法对对象进行操作。所以你需要改变你的第一行,用
FulfillmentOrder fo = new FulfillmentOrder()实例化FulfillmentOrder。 -
@JAsgarov 对不起,我忘记添加了,即使添加了,问题也是一样的。
-
似乎 Lombok 生成的设置器(返回类型为 void)与您的自定义设置器(返回类型为整数)发生冲突。您必须选择一个,或者将您的名称更改为不相同
-
@JAsgarov 我的目的是将 orderNbr 设置为 89898989,因为稍后我将转换为 xml 对象。有没有办法用 lombok 注释做到这一点?
-
在大多数情况下,setter 返回当前对象的实例(如在构建器中)或 void。返回内部传递的值几乎/没有意义,因为它应该保持不可变。所以也许删除自定义设置器并让 lombok 创建它们。