表示类中的可选属性

时间:2018-05-15 20:03:24

标签: java

我有一个包含许多属性的Java类,其中一些属性是可选的。 在下面的示例中,属性 linkerNumber linkerStatus linkerPressure 是可选的,表示可能连接或未连接到设备的物理对象

现在我混合了原始类型和非原始类型,因为 linkerPressure 是可选的但 flow inputPressure outputPressure < / em>是必需的。

我应该:

  • 为了统一起见,将所有属性更改为非原始属性?
  • 混合原始类型和非原始类型以匹配/不需要的内容?
  • 使用特殊的null类(Null Object Pattern)将链接器值表示为自己的对象?

我对使用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;

表示此数据的最佳方式是什么?

1 个答案:

答案 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);
   }

}