カスタムアノテーションを定義する時に

public @interface myannotation {
 public String value();
}

としますけど、"class"や"interface"といった予約語ではなく、"@interface"というアノテーションで定義できるのが不思議です。
これってどうやってじつげんしているのでしょうか。
また、"@interface"に相当するものを作るにはどうしたらいいでしょうか。