суббота, 21 февраля 2009 г.

Аннотации

Потребовалось мне тут решить одну проблему с помощью аннотаций. И что бы вы думали? Узнал много нового...
Согласно JLS 9.6: It is a compile-time error if the return type of a method declared in an annotation type is any type other than one of the following: one of the primitive types, String, Class and any invocation of Class, an enum type (§8.9), an annotation type, or an array (§10) of one of the preceding types.
Оказалось, что там жёстко ограниченный набор разрешённых типов. Почему-то String использовать можно, а вот Boolean - нельзя, хотя boolean - можно. Ещё там есть возможность определить значение по умолчанию, но нет возможности использовать null. Поэтому приходится вместо одной аннотации с несколькими атрибутами заводить несколько аннотаций - по одной на каждый атрибут.
Блин! И зачем они такие урезанные нужны?