所以我正在尝试使用检查器框架(来自https://checkerframework.org/),并且我有以下代码:
import org.checkerframework.checker.index.qual.Positive;
public class Ceker {
public static void main(String[] args) {
double a = Double.parseDouble(args[0]);
System.out.println(new Ceker().preconditions(a));
}
public int preconditions(@Positive double a){
return (int) a;
}
}
我如何理解这是有效的,是我可以运行类似的东西
javacheck -processor positiveness Ceker.java
然后检查器会告诉我,我没有规则来测试是否double a
总是积极的 - 所以我转到 main 方法并将其更改为:
public static void main(String[] args) {
double a = Double.parseDouble(args[0]);
if(a<0){
throw new IllegalArgumentException("a is not positive!");
}
System.out.println(new Ceker().preconditions(a));
}
现在,我的问题是 - 我可以不添加额外的检查代码,@Positive
如果违反合同,让该注释在运行时自动抛出异常吗?