در ساده ترین حالت یک حاشیه نگاری به شکل زیر خواهد بود :

@Entity

کاراکتر @ به کامپایلر اعلام می کند که متن پس از آن یک حاشیه نگاری می باشد. مثال زیر را در نظر بگیرید :

@Override

void mySuperMethod()  { … }

این حاشیه نگاری به کامپایلر اعلام می کند که ما در حال بازنویسی تابعی در این کلاس هستیم که در تابع پدر (ارث بری شده) وجود داشته است. 

حاشیه نگاری ها می توانند شامل بخش های مختلفی نیز باشند که این بخش ها می توانند با نام یا بدون نام باشند. مثال زیر را در نظر بگیرید :

@Author(

name = “Mostafa Davodi”

date = “3/7//2017”

)

class MyClass()  { … }

یا مثال زیر را در نظر بگیرید :

@SupressWarnings(value = “unchecked”)

void myMethod()  { … }

البته اگر حاشیه نگاری فقط شامل یک بخش با نام باشد، می توان آن نام را نیز حذف کرد :

@SupressWarnings(“unchecked”)

void myMethod()  { … }

همچنین اگر حاشیه نگاری شامل بخشی نباید می تواند پرانتزها را نیز حذف کرد. مثال : @Override

نکته دیگری که می توان ذکر کرد آن است که امکان استفاده از چند حاشیه نگاری برای یک کلاس یا تابع یا … نیز وجود دارد :

@Author(name = “Mostafa Davodi”)

@EBook

class MyClass { … }

حال سوال اساسی که مطرح می شود آن است که کجا می تواند از حاشیه نگاری استفاده کرد؟

از حاشیه نگاری می توان در تعریف ها استفاده کرد، به طور مثال در تعریف کلاس ها، متغییرها، توابع و بخش های دیگر برنامه ها. از نسخه Java SE 8 از حاشیه نگاری برای نوع ها نیز می توان استفاده کرد. به طور مثال :

ایجاد یک شی از یک کلاس :

new @Interned MyObject();

تبدیل نوع :

myString = (@NonNull String) str;

پیاده سازی clause :

class UnmodifiableList<T> implements @Readonly List<@Readonly T> { … }