这些发布全局常量的方法中哪一个更好?致谢!!!
Method 1: final class with public static final fields
public final class CNST{
private CNST(){}
public static final String C1;
public static final String C2;
static{
C1="STRING1";
C2="STRING2";
}
}
//so I could call C1, C2 like:
//...some code...
//System.out.println(CNST.C1);
//System.out.println(CNST.C2);
Method 2: singleton with enum
public enum CNST{
INST;
public final String C1;
public final String C2;
CNST{
C1="STRING1";
C2="STRING2";
}
}
//so I could call C1, C2 like:
//...some code...
//System.out.println(CNST.INST.C1);
//System.out.println(CNST.INST.C2);
答案 0 :(得分:1)
遵循更常见惯例的东西将是这样的:
public class MyAppConstants {
public static final String C1 = "STRING1";
public static final String C2 = "STRING2";
}
然后你可以像这样参考:
System.out.println(MyAppConstants.C1);
但是,如果我必须在两者之间选择,我猜我会选择第一个,因为枚举是误导性的,并没有帮助功能,也不会使代码更清晰。
答案 1 :(得分:0)
对于像我这样简短的甜蜜代码的粉丝,他们喜欢尽量减少代码中的字符数,如果你不需要像#一样的类名预先挂起常量名称34; MyGlobaConstants",您可以创建一个基本活动类,如MyBaseActivity,并从中扩展您的所有活动。就这样:
public abstract class MyBaseActivity extends Activity {
public static final String SOME_GLOBAL_STRING = "some string";
public static final int SOME_GLOBAL_INT = 360;
这样做还有其他好处,例如创建所有活动都可以使用的方法,这通常是一种很好的做法。