2013-12-11 45 views
0

嗨,我有与@Raw注释此应用程序。我的问题是,如果以下代码中的这两个函数由于RAW注释和WHY而有效? 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

你不指定的@Raw注释从何而来,所以我会假设你的意思是checker framework.从文档:

这种类型限定符属于半生不熟的类型系统,用于跟踪 初始化。这种类型的系统并没有使用它自己,但在想要确保安全 初始化一些其他类型的系统 结合。例如,NullnessRawnessChecker使用初始化来追踪NonNull字段的初始化为 。

代码中的函数是有效的,并且也可以自行工作。有人只是想要一些保障措施,以确保他们正在使用的对象完全初始化。

相关问题