Files
SlimeVR-Server/java/io/eiren/util/ann/Transient.java
2022-09-13 03:13:06 +03:00

40 lines
2.0 KiB
Java

package io.eiren.util.ann;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* <p>
* Означает что поле используется для временных или быстро изменяющихся
* переменных.
* </p>
* <p>
* Поле помеченное этой аннотацией не влияет на долгосрочное состояние объекта,
* не участвует в сериализации, вычислении equals и hashCode, не определяет
* поведение объекта для внешнего кода. Поэтому такие поля не должны
* использоваться внешним кодом, их состояние имеет смысл только для самого
* объекта в котором они объявлены.
* </p>
* Примеры:
* <ul>
* <li>Временный объект, который используется в методах для внутренних
* вычислений. Например векторные и матричные вычисления.</li>
* <li>Внутренний флаг для мультитрединга. Например, флаг апдейта графического
* состояния взводимый из игрового потока.</li>
* <li>Выведенное значение или структура, которое инициализируется самим
* объектом по фиксированному правилу. Например, производное значение от
* переменной параметризующей объект. Инициализируемый в конструкторе lookup
* table.</li>
* </ul>
*
* @author tort32
*/
@Retention(value = RetentionPolicy.SOURCE)
@Target({ ElementType.FIELD })
public @interface Transient {
}