2017-06-26 3 views
0

は、Android/javaを学習し始めたばかりで、コードの中で「@」の出現が多く見られました。 @Override私はGoogleを使用して見つけることができますが、それの残りは謎です。 「@」java/androidで '@'が意味するものは

@BindView(R.id.note1) TextView importantNote; 

んが、特別な機能を持っているか、それが法BindView()名前の普通の一部です:ButterKnifeライブラリを使用して 例:一方で、私たちはこのように変数を宣言しますか?私が「@」について具体的なものを見つけることができなかったので、何らかの種類のコンベンションになるかもしれないという考えを思いつきました。私は正しい?もしそうなら、大会は何ですか?

+4

https://docs.oracle.com/javase/tutorial/java/annotations/ – Reimeus

+0

もう1つの優れたリソース - http://tutorials.jenkov.com/java/annotations.html – Dayan

+0

公式Javaチュートリアル? –

答えて

2

@は注釈を宣言しています。アノテーション・プロセッサは、コードをコンパイルするときに、アノテーションのコードをスキャンし、必要に応じてコードを生成することができます(たとえば、ビューを変数にバインドするために必要なfindViewByIdコードをBindViewアノテーションが生成するなど)オーバーライドは、変数が実際に何かをオーバーライドするかどうかを確認します。そうしないと、コンパイラエラーが発生します。あなた自身のアノテーション(とどのように注釈プロセッサが動作)を作成する方法の詳細については

ここで読む:https://docs.oracle.com/javase/8/docs/api/javax/annotation/processing/Processor.html

+0

そのようなコンパイラのためのショートカットのような。コンパイラはそれを見て、私たちのためにいくつかのコードを生成しますか? – Leo

+0

@Leo基本的には、はい – Aenadon

2

これらは、「注釈」ですhttps://docs.oracle.com/javase/tutorial/java/annotations/

をチェックしてください。例えば

@SuppressWarnings("unused") 
@BindView

の例では、インライン注釈である:

@Override 
protected void overridenMethod() { 
} 

注釈は、このような引数を有することができます。インライン注釈は非常に稀であり、インライン注釈の他の例は、非常に具体的な@SuppressLint注釈です。

コンパイラの警告やエラーなどのアノテーションを作成する場合は、独自のアノテーションを作成できます。この場合、IDEは注釈を検出する必要があります。たとえば、SuppressLintは、IDEがアノテーションをサポートしている場合にのみ機能し、そうでない場合、アノテーションは効果を持ちません。

関連する問題