Я все еще новичок в программировании на Java, просматривал проект с открытым исходным кодом и наткнулся на это
public @TileNetworkData int progressPart = 0;
Я видел использование @
раньше, но только для того, чтобы делать такие вещи, как @override
перед участником. К моему удивлению, поиск определения привел меня к пользовательскому коду
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface TileNetworkData {
int staticSize () default -1;
}
. Что делает этот код и для чего он полезен? Похоже, он добавляет в поле какую-то форму метаданных. Как используется что-то подобное?
Погуглив, я обнаружил, что это называется «Аннотации», но все, что к нему прилагается, пролетело у меня над головой. Приветствуется любой пример, в котором можно было бы использовать что-то подобное.