我知道这可以在 Ada 中完成,但我是 Java 的新手,不知道我是否可以这样做。我想制作一个从 0 到 2pi 的 float 子类型的弧度。超出范围的值将被视为超出范围并通过约束错误。感谢您的帮助!
最佳答案
commons.lang.math.Range 只是指定范围约束。它不代表该范围内的值(我认为这是您想要的)。
您可以创建一个新类来保存值并强制执行约束。您自己的程序将传递此类的实例,从而获得类型安全(强制执行约束)。调用其他 API 时,您必须恢复为发送和接受常规 double 值。您可以在接受返回值之前再次检查约束。
public class Radian extends Number {
private final double value;
public Radian(double value){
if (value < 0 || value >= 2 * PI)
throw new IllegalArgumentException(value + " is out of range");
this.value = value;
}
public double doubleValue(){
return value;
}
// ... and other methods in the Number interface
// don't forget equals and hashCode and toString
}
关于java - 是否可以创建具有最小和最大范围的浮点类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4048349/