Int Def声明Java

时间:2017-10-17 13:10:20

标签: java android int

这两个声明之间的区别是什么?

    public static final int a = 0;
    public static final int b = 1;
    public static final int c = 2;

    @IntDef({a, b, c})
    @Retention(RetentionPolicy.SOURCE)
    public @interface SomeIntDef {
    }

    @IntDef({a, b, c})
    @Retention(RetentionPolicy.SOURCE)
    public @interface SomeIntDef {
         int a = 0;
         int b = 1;
         int c = 2;
    }

我的意思是什么是最佳做法或这两个声明之间存在任何技术差异。

1 个答案:

答案 0 :(得分:0)

是的,有一些不同。

  public static final int a = 0;
  public static final int b = 1;
  public static final int c = 2;

  @IntDef({a, b, c})
  @Retention(RetentionPolicy.SOURCE)
  public @interface SomeIntDef {
  }

您正在声明SomeIntDef的anchor(父)类中的静态字段。所以这就是你引用它的方式

YourParentClass.a

另一方面,

  @IntDef({a, b, c})
  @Retention(RetentionPolicy.SOURCE)
  public @interface SomeIntDef {
     int a = 0;
     int b = 1;
     int c = 2;
  }

您将参考

ParentClass.SomeIntDef.a

您也可以将其编写为独立类。 (在另一个.java文件中创建一个新的注释),它使用了

SomeIntDef.a

这些不同的用法正在改变可读性。

所有这些可接受,但选择对您的设计来说最有意义。

祝你好运

埃姆雷