嗨,我的应用程序带有@Raw注释。我的问题是,如果以下代码中的这两个函数是有效的,因为RAW注释和为什么? this.setX(some.getX());或some.setX(this.getX());
/**
* @invar …
* | getX() <= 0
*/
public class SomeClass {
@Raw
public float getX() {
return this.x;
}
public void setX(float x) throws IllegalArgumentException {
if (x > 0)
throw new IllegalArgumentException();
this.x = x;
}
private float x;
@Raw
public void someMethod(SomeClass some) throws NullPointerException {
this.setX(some.getX());
some.setX(this.getX());
}
}
答案 0 :(得分:0)
你没有指定@Raw注释的来源,所以我假设你的意思是checker framework.来自文档:
此类型限定符属于用于跟踪的原始类型系统 初始化。这种类型系统不是单独使用,而是在 与其他想要确保安全的类型系统相结合 初始化。例如,NullnessRawnessChecker使用rawness来 跟踪NonNull字段的初始化。
代码中的函数是有效的,也可以自行运行。有人只是想要一些安全措施来确保他们使用的对象已经完全初始化。