我有一个包含许多属性的Java类,其中一些属性是可选的。 在下面的示例中,属性 linkerNumber , linkerStatus 和 linkerPressure 是可选的,表示可能连接或未连接到设备的物理对象
现在我混合了原始类型和非原始类型,因为 linkerPressure 是可选的但 flow , inputPressure 和 outputPressure < / em>是必需的。
我应该:
我对使用Null对象模式的厌恶是单独的链接器对象不会为我提供任何其他功能。
public class State {
private long serial;
private long received;
private String deviceId;
private String linkerNumber;
private String linkerStatus;
private Integer linkerPressure;
private int flow;
private int inputPressure;
private int outputPressure;
表示此数据的最佳方式是什么?
答案 0 :(得分:4)
我首先会想到Builder模式(如果这里还没有),那么我会将每个可选参数从Optional
包装到java.util
中(如果你在java-8
下面,那就是番石榴。
事情就是,即使你把它们全部变成对象,例如getFlow
的调用者(将返回Integer
)也可能不会想到先检查 >然后代理,它将采用非空值。你有多少次检查对象的返回类型?
但是让Optional<Integer>
(或OptionalInt
)强制调用者进行相应的思考和行动。请注意,Optional<T>
主要用于返回类型,表示可能缺失的值。
按照你可以拥有的东西:
class State {
private Integer flow; // nullable
public Optional<Integer> getFlow(){
return Optional.ofNullable(flow);
}
}