Аннотации используются для связывания метаданных с типами, определенными в файле определения Thrift (".thrift"). The AnnotationThrift.test
file в исходном дистрибутиве есть примеры.
Вот, например, является struct
с аннотациями (в скобках):
struct foo {
1: i32 bar (presence = "required");
2: i32 baz (presence = "manual", cpp.use_pointer = "",);
3: i32 qux;
4: i32 bop;
} (
cpp.type = "DenseFoo",
python.type = "DenseFoo",
java.final = "",
annotation.without.value,
)
Глядя на код, кажется, аннотаций только когда-либо используются для обеспечения директивы компилятора —, например, компилятор C++ использует аннотацию cpp.type
, если она присутствует, до override a type's name в сгенерированном коде.
Я не вижу ничего, что предполагает аннотации сами когда-либо воспроизведены или доступные для сгенерированного кода, хотя, если такой код делает существует, то он был бы расположен в compiler/cpp/src/generate/
.
Могу ли я спросить, почему вы спрашиваете? Есть ли конкретная проблема, которую вы планируете разрешать аннотации или просто любопытство? – JensG
Если было интересно, можно ли, например, подключить произвольные атрибуты к структурам, которые клиентский код мог проверить во время выполнения ... например, '(validation.regex =" /.*@.*\.com/ ")' или что-то типа того. – BCG
Не то, что я знаю, но Java не является моей областью знаний. Вы можете отправить этот вопрос в список рассылки. Стоит попробовать. – JensG