Как работают аннотации пользователей?

Я все еще новичок в программировании на 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; 

}

. Что делает этот код и для чего он полезен? Похоже, он добавляет в поле какую-то форму метаданных. Как используется что-то подобное?

Погуглив, я обнаружил, что это называется «Аннотации», но все, что к нему прилагается, пролетело у меня над головой. Приветствуется любой пример, в котором можно было бы использовать что-то подобное.

9
задан Scott Chamberlain 9 October 2011 в 11:14
поделиться