2016-06-30 11 views
1

私が研究しなければならないプロジェクトが与えられています&を理解しています。次を持つクラスがあります: -Androidの注釈が正しく理解されていません

public abstract class AbstractPayment extends GodelCheckout { 
    public static final String AUTH_USING_GET = "GET"; 
    public static final String AUTH_USING_POST = "POST"; 

    @Retention(RetentionPolicy.SOURCE) 
    @StringDef({AUTH_USING_GET, AUTH_USING_POST}) 
    public @interface AuthMethod {} 

彼らは、Googleの開発者向けサイトから重要である理由私は注釈&を理解しようとしたが、私は、彼らがコードを改善するために使用されているという事実からあまり離れて理解できませんでした。

  1. しかし、コードをどのように改善していますか?どんな例ですか?

  2. なぜ@Retention(RetentionPolicy.SOURCE)が必要ですか?

  3. @StringDef()は実際に何をしますか?

  4. public @interface AuthMthod{}とは何ですか?

  5. Retention.SOURCE, .CLASS & .RUNTIMEが本当に何であるか説明してください。私はGoogleの開発者のサイトからそれらを理解しようとしましたが、あまり役に立たなかったのですか?その関数の引数や結果をマーキングすることにより

+1

5. https://docs.oracle.com/javase/7/docs/api/java/lang/annotation/RetentionPolicy.html –

+1

4. [注釈の種類](https://docs.oracle.com)です。 com/javase/tutorial/java/annotations/declaring.html)。 –

+1

1.いくつかの使用例がここにあります:https://docs.oracle.com/javase/tutorial/java/annotations/index.html –

答えて

2
  1. 、あなたが予想される動作を定義することができます。たとえば、その注釈で関数の引数をマークすると、AUTH_USING_GETまたはAUTH_USING_POST以外の引数は渡せません。
  2. 注釈エラーがある場合、ソースの保持により、コードはコンパイルされません。コンパイルが成功すると、コードから削除されます。保持ポリシーRUNTIMEでは、実行中にコードが検査されます。
  3. @StringDefは、StringのID(例:R.string.login)のみを渡すことができます。 @IntDefは、R.id.sample_intのみを関数に渡すことを許可します。
  4. これは、目的の結果を得るために必要なパラメータ、関数結果、またはクラスフィールドに注釈を付ける必要がある注釈です。
  5. 2番目の質問をご覧ください。

詳細については、Javaのマニュアルを参照してください。

関連する問題