java – 在Android中使用接口到命名空间常量

从我所读到的使用接口来定义常量通常在 Java中被忽略,除非你打算通过类继承常量来实现接口.但我经常在 Android程序中遇到这样的代码:

interface Tags {
    String BLOCK = "block";
    String TITLE = "title";
    String START = "start";
    String END = "end";
    String TYPE = "type";
}

就个人而言,我喜欢能够像这样将常量组合成一个命名空间.所以我的问题是这样做有什么不利之处吗?我假设它可能不如使用静态最终字符串那样高效,因为编译器可以内联它们.

首先,要知道界面中的字段是隐含的静态和最终的.

常量接口通常被认为是反模式(见http://en.wikipedia.org/wiki/Constant_interface).更好的选择是:

public final class Tags {
    public static final String BLOCK = "block";
    // Other constants...

    private Tags() {}
}

由于Tags类是final,因此没有类可以扩展它.相反,想要使用Tags中的常量的类只需:

import my.package.Tags;

然后:

System.out.println(Tags.BLOCK);

从Java 5开始,可以直接导入常量:

import static my.package.Tags.BLOCK;
// Other static imports...

所以他们可以像这样使用:

System.out.println(BLOCK);
相关文章
相关标签/搜索