197
@AdditionalMethodAnnotation
( value = "123" )
public void n
(@SimpleParameterAnnotation int k)
{ ... }
}
AdditionalMethodAttribute
(value = "123")]
public void n
([SimpleParameterAttribute] int k)
{ ... }
}
В Java аннотации могут помечать также пакеты
(т.е. использоваться в директиве декларации
пакета, к которому относится данный файл),
декларации локальных переменных и константы
перечислимых типов.
В C# могут быть описаны глобальные атрибуты,
помечающие сборку, в рамках кода которой они
встречаются. Такие атрибуты помещаются вне
описаний пространств имен.
Также атрибутами могут помечаться
отдельные
методы доступа к свойствам, индексерам и
событиям.
Аннотационный тип декларируется с
модификатором
@interface и неявно наследует
интерфейсу
java.lang.annotation.Annotation.
Такой тип не может иметь типовых параметров
или явным образом наследовать другому типу.
Атрибутный тип описывается как класс,
наследующий
System.Attribute или его
наследнику.
Такой тип не может иметь типовых параметров.
Свойства аннотационного типа описываются
как абстрактные методы без параметров, с
возможным значением по умолчанию.
При определении значений свойств аннотации
через запятую перечисляются пары <имя
свойства> = <значение>.
Помимо свойств, в аннотационном типе могут
быть описаны константы (
public static
final
поля) и вложенные типы, в том числе
аннотационные.
Свойства атрибутного типа могут быть
именованными параметрами и позиционными
параметрами.
Позиционные параметры определяются при
помощи конструкторов атрибутного типа.
Именованные параметры определяются как
доступные для чтения и записи нестатические
поля и свойства атрибутного типа.
При определении значений свойств атрибута
сначала через запятую перечисляются значения
позиционных параметров, а затем пары <имя
именованного параметра> = <значение>.
ибутном типе могут быть описаны такие
ном классе.
Ниже приведен пример использования
позиционного параметра.
class ClassAttribute : Attribute
{
public ClassAttribute(int id)
{
this.id = id;
}
int id;
public string value;
}
[ClassAttribute(4627, value = "")]
public class A { ... }
Свойство аннотационного типа может иметь
примитивный тип, тип
String, Class,
экземпляр шаблонного типа Class,
перечислимый тип, аннотационный тип или
быть массивом элементов одного из
перечисленных типов.
Свойство атрибутного типа может иметь один
из типов
bool, byte, char, double, float, int,
long, short, string, object, System.Type,
перечислимый тип или быть массивом
элементов одного из таких типов.
В атр
же элементы, как и в обыч