gpt4 book ai didi

java - 任何使空对象不可变的标准模式或策略

转载 作者:行者123 更新时间:2023-12-04 05:21:06 25 4
gpt4 key购买 nike

在java中,我们更喜欢null object模式而不是在所有引用中使用非空检查来困惑代码。最近我们在使用 null object 时遇到了问题。通过保留 singleton对象。
假设我们有 Person类如下

public class Person {
public String firstName;
public String lastName;
public boolean isNull() {
return false;
}
public static final Person NULL = new Person() {
public boolean isNull() { return true; }
}
}

在这种情况下,虽然我已经声明 NULL object 作为 final,我仍然可以修改成员变量及其全局可用。
Person nullRef = Person.NULL;
Person.NULL.firstName = "sample";
System.out.println(nullRef.firstName);

在这种情况下,它只有三个字段,我可以通过覆盖这三个 getter 方法来解决可变性问题。但实际上会有很多字段很难覆盖所有相应的 getter 方法。
NULL 中是否有任何标准模式或策略来解决此可变性问题?对象?

最佳答案

使用 Google Guava 库中的 Optional

Optional<Integer> possible = Optional.of(5);
possible.isPresent(); // returns true
possible.get(); // returns 5

引用库文件:

Besides the increase in readability that comes from giving null a name, the biggest advantage of Optional is its idiot-proof-ness



这是处理空对象的更自然的方式

Optional Google Guava

关于java - 任何使空对象不可变的标准模式或策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13681246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com