Java 在Android中使用命名空间常量的接口
从我所读到的内容来看,在Java中,使用接口来定义常量通常被轻视,除非您打算由实现接口的类继承常量。但我在Android程序中经常遇到这样的代码:Java 在Android中使用命名空间常量的接口,java,android,Java,Android,从我所读到的内容来看,在Java中,使用接口来定义常量通常被轻视,除非您打算由实现接口的类继承常量。但我在Android程序中经常遇到这样的代码: interface Tags { String BLOCK = "block"; String TITLE = "title"; String START = "start"; String END = "end"; String TYPE = "type"; } 就我个人而言,我喜欢能够像这样将常量组合到一
interface Tags {
String BLOCK = "block";
String TITLE = "title";
String START = "start";
String END = "end";
String TYPE = "type";
}
就我个人而言,我喜欢能够像这样将常量组合到一个不同的名称空间中。那么我的问题是这样做有什么不利之处吗?我假设它可能不如编译器内联使用静态最终字符串那样有效 首先,要知道接口中的字段是隐式静态的和最终的 常量接口通常被视为反模式(请参阅)。更好的选择是:
public final class Tags {
public static final String BLOCK = "block";
// Other constants...
private Tags() {}
}
由于标记
类是final,因此任何类都不能扩展它。相反,要使用标记中的常量的类只需执行以下操作:
import my.package.Tags;
然后:
System.out.println(Tags.BLOCK);
从Java 5中,可以直接导入常量:
import static my.package.Tags.BLOCK;
// Other static imports...
因此,它们可以这样使用:
System.out.println(BLOCK);
非常感谢你!回答得很好。