2011-09-16 12 views
2

Java注釈を言語またはライブラリの機能と見なす必要があります。明らかに言語機能である注釈の概念を意味するのではなく、@Overrideや@Deprecatedなどの特定の注釈を意味しますか?java注釈 - ライブラリまたは言語機能?

サードパーティのライブラリ(Hibernateアノテーションなど)のみでサポートされているアノテーションは、明らかにJava言語の一部ではありませんが、組み込みアノテーションではわかりません。

これはあまりにもとりとめとみなされた場合、

答えて

2

は、私はそれについて考える方法は次のとおりです。

boolean isLanguageFeature(foo) 
{ 
    return JLS.contains(foo) 
} 

JLSは、Javaプログラミング言語について説明します。アノテーションの概念は明確に理解されるように、の言語フィーチャーです。一方、Collections APIなど、JLSで記述されていない標準的なJavaライブラリ機能が数多くあります。 JLS §9.6.1, Predefined Annotation Typesから

いくつかの注釈の種類は、Javaプラットフォームのライブラリーで事前に定義されています。これらのあらかじめ定義された注釈型の中には、特別な意味論を持つものがあります。これらのセマンティクスは、このセクションで指定されています。このセクションでは、ここに含まれている定義済みの注釈の完全な仕様は提供していません。これは適切なAPI仕様の役割です。ここでは、Javaコンパイラまたは仮想マシン側で特別な動作が必要なセマンティクスのみが指定されています。これらの線に沿って考える

、そして、私は、Javaアノテーションはライブラリ機能していることを言うと思います。 @Deprecated@Overrideなどの

-1

注釈がコードにメタデータを追加するための(Javaで)使用されているprogrammers.stackexchange.comに移動するにはお気軽に。アノテーションは、読みやすくメンテナンス可能なコードを書く方法です。したがって、良いコードを書くにはアノテーションの天気はJavaの注釈や他のサードパーティーのものです。

EJBステートレスにするために@Statelessアノテーションを追加するだけです。ここで

+2

私は彼の質問が、Javaアノテーションの性質と、それが何であるか、いつ使用されるべきかとは関係があると考えています。 –

+0

@tkeと合意しました。 OPは、注釈を使用する方法と理由を明確に理解しています。この答えは質問を逃し、いずれにせよ完全に終わらない。 –

2

注釈が施行及び/またはコードの振る舞いを記述するための言語ツールが使用するが起こるのライブラリ機能です。間違いなくライブラリ機能。

+0

私はあなたに同意しますが、あなたは実際にサポートする議論を提供していません。 –

+2

標準のJavaライブラリに入っています。定義上、それらはライブラリの機能です。私はそれをサポートする強い必要性を感じていない、と思います。 –

+0

引数をサポートしています: '@ Override'は標準アノテーションの中で最も言語に敏感です。しかし、この注釈を完全に無視する別のJavaコンパイラを作成した場合、生成されるコードは 'javac'が生成するものとまったく同じように動作します。注釈がコードの動作を変更する唯一の方法は、ライブラリ(Hibernateなど)がバイトコードエンハンサーでそれらを処理する場合です。 – millimoose

関連する問題