2013-12-11 4 views
0

Привет, У меня есть это приложение с аннотацией @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

Вы не указать, где аннотацию @Raw приходит, поэтому я предполагаю, что вы имеете в виду checker framework. Из документов:

Этот тип спецификатор относится к типу Саднение-системы для отслеживания инициализация. Эта система типов не используется сама по себе, а в соединена с какой-либо другой системой типов, которая хочет обеспечить безопасную инициализацию . Например, NullnessRawnessChecker использует rawness для отслеживания инициализации полей NonNull.

Функции в вашем коде действительны и будут работать сами по себе. Кто-то просто хотел получить некоторые гарантии, чтобы убедиться, что объекты, которые они используют, полностью инициализированы.

Смежные вопросы