Android注释不能正确理解

时间:2016-06-30 09:15:44

标签: java android annotations

我得到了一个我必须学习的项目。了解。有一个类有以下内容: -

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 个答案:

答案 0 :(得分:2)

  1. 通过标记函数参数或其结果,您可以定义预期的行为。例如,它使用该注释标记函数参数,不能传递除AUTH_USING_GETAUTH_USING_POST之外的其他参数。
  2. 使用源保留时,如果存在注释错误,代码将无法编译。编译成功后,它们将从代码中删除。使用保留策略RUNTIME时,将在运行期间检查代码。
  3. @StringDef允许您仅传递String个ID,例如R.string.login@IntDef允许您仅将R.id.sample_int传递给函数
  4. 这是注释,必须注释所需的参数或函数结果或类字段以获得所需的结果。
  5. 看第二个问题。
  6. 有关更多问题,请参阅Java文档。