设置可选
Set with Optional
我有这个代码:
if (myClass != null){
myClass2.setId(myClass.getId());
myClass2.setName(myClass.getName());
myClass2.setPosition(myClass.getPosition());
}
我想将此代码替换为:
Optional.ofNullable(myClass)
并将此字段从 myClass 映射到 myClass2
我该怎么做?
您是否打算使用:
Optional.ofNullable(myClass)
.ifPresent(m -> {
myClass2.setId(m.getId());
myClass2.setName(m.getName());
myClass2.setPosition(m.getPosition());
});
对于映射,我建议阅读有关 MapStruct 的内容,这是一个很好的工具。
如果您只是简单地克隆 myClass 对象,那么您可以像这样在可选对象上使用 map 方法:
public class Test {
public static void main(String[] args) {
MyClass mc = new MyClass(1,"abc");
System.out.println(myClone(Optional.ofNullable(mc)));
mc = null;
System.out.println(myClone(Optional.ofNullable(mc)));
}
public static Optional<MyClass> myClone(Optional<MyClass> mc) {
return mc.map(o->new MyClass(o.id(), o.name())); //<-- do your mapping here
}
}
record MyClass(int id, String name) {};
输出:
Optional[MyClass[id=1, name=abc]]
Optional.empty
为简单起见,我正在使用记录 MyClass。
ifPresent
方法采用 Consumer function and map
method takes Function 函数。
我有这个代码:
if (myClass != null){
myClass2.setId(myClass.getId());
myClass2.setName(myClass.getName());
myClass2.setPosition(myClass.getPosition());
}
我想将此代码替换为:
Optional.ofNullable(myClass)
并将此字段从 myClass 映射到 myClass2
我该怎么做?
您是否打算使用:
Optional.ofNullable(myClass)
.ifPresent(m -> {
myClass2.setId(m.getId());
myClass2.setName(m.getName());
myClass2.setPosition(m.getPosition());
});
对于映射,我建议阅读有关 MapStruct 的内容,这是一个很好的工具。
如果您只是简单地克隆 myClass 对象,那么您可以像这样在可选对象上使用 map 方法:
public class Test {
public static void main(String[] args) {
MyClass mc = new MyClass(1,"abc");
System.out.println(myClone(Optional.ofNullable(mc)));
mc = null;
System.out.println(myClone(Optional.ofNullable(mc)));
}
public static Optional<MyClass> myClone(Optional<MyClass> mc) {
return mc.map(o->new MyClass(o.id(), o.name())); //<-- do your mapping here
}
}
record MyClass(int id, String name) {};
输出:
Optional[MyClass[id=1, name=abc]]
Optional.empty
为简单起见,我正在使用记录 MyClass。
ifPresent
方法采用 Consumer function and map
method takes Function 函数。