2013-03-21 89 views

回答

3

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

+2

你可以换一个'Integer',但不能扩展它;这是'最终'。 – rgettman 2013-03-21 18:08:59

+0

@rgettman感谢您的注意。更正了答案 – giorashc 2013-03-22 07:59:13

5

你可以得到最接近的是

1)你的价值观的范围内创建一个枚举,这就是枚举是。

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

    private int val; 
    MyVals(int val) { 
     this.val = val; 
    } 
} 

see this。当然这只有在数值是离散的时候才起作用(即不是浮动的)

2)使字段保密并编写一个智能设置程序,以不可接受的值爆炸。

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

与您所谈论的最接近的是枚举,它允许您指定一组修复值。没有办法声明一个Integer,但限制它可以拥有的有效值。不过,您可以创建自己的类型并强制执行此类限制。

0

您可以对这样的集合使用枚举。但我想你也想要一些有意义的值映射。在这种情况下,维护一个查找HashTable,使用键作为枚举,并为任何你想要的值赋值。