如何实现java数据类型的undef和null值之间的区别

Ram*_*esh 3 java

如果我们必须区分类中属性的'undefined'值和'null'值,那么应用程序中遵循的常用方法是什么?

例如,假设我们有一个A类

public class A {
 Integer int1;
 Boolean bool1;
 Double doub1;
 String str1;
}
Run Code Online (Sandbox Code Playgroud)

在代码中,我们想区分A的每个属性是否已设置(null是要设置的VALID值).

一种方法是从java数据类型扩展自定义数据类型.其他方法是为每种数据类型分配一些任意不可达的值,并将这些值视为undef.

还有其他更好的方法吗?

sje*_*397 6

我会使用泛型来创建一个包含'set'标志的包装器.

public class Settable<T> {

  private boolean isSet = false;
  private T value;

  public Settable() {}

  public boolean isSet() {return isSet;}
  public T value() { return value;}
  public void set(T t) { value = t; isSet = true;}
}
Run Code Online (Sandbox Code Playgroud)

...然后用例如声明你的班级

public class A {
  //...
  Settable<Integer> int1;
  //...
}
Run Code Online (Sandbox Code Playgroud)