定义仅接受特定值范围的Java变量

Zah*_*hra 5 java variables static final field

是否有内置方法来定义接受特定范围内值的字段/变量?我的意思是在编译时解决它的一种方法.

例如,定义一个仅取1-10之间的值的double变量.

hvg*_*des 5

你能得到的最接近的是

1)为您的值范围创建一个枚举,这就是Enums的用途.

public Enum MyVals {
   ONE(1)
   TWO(2)
   ...

   private int val;
   MyVals(int val) {
      this.val = val;
   }
}
Run Code Online (Sandbox Code Playgroud)

看到这个.当然,只有当值是离散的(即不是浮点数)时,这才有效

2)让这个领域变得私密,并写一个智能的设定器,它会破坏不可接受的价值.

public void setVal(int val) {
   if (val < 0 || val > 10) throw....;
   this.val = val;
}
Run Code Online (Sandbox Code Playgroud)


gio*_*shc 3

不,因为在编译时无法知道您的软件逻辑是否会产生超出范围的值。并且在运行时,原生 sdk 不支持它的实现。但是,您可以包装类型类(例如,MyInteger使用Integer实例创建类作为由类中的范围验证方法包装的成员MyInteger

  • 你可以包装一个“Integer”,但不能扩展它;这是“最终”。 (2认同)