这两个声明之间的区别是什么?
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;
}
我的意思是什么是最佳做法或这两个声明之间存在任何技术差异。
答案 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
这些不同的用法正在改变可读性。
所有这些可接受,但选择对您的设计来说最有意义。
祝你好运埃姆雷