gpt4 book ai didi

java - 在 Android 中使用命名空间常量的接口(interface)

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:32:59 28 4
gpt4 key购买 nike

据我所读,使用接口(interface)定义常量在 Java 中通常被看不起,除非您希望常量由实现接口(interface)的类继承。但我在 Android 程序中经常遇到这样的代码:

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

就我个人而言,我喜欢能够像这样将常量组合到一个命名空间中。所以我的问题是这样做有什么缺点吗?我假设它可能不如使用 static final 字符串有效,因为编译器可以内联这些字符串。

最佳答案

首先,知道接口(interface)中的字段是隐式静态和最终的。

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

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

private Tags() {}
}

由于 Tags 类是最终类,因此任何类都不能扩展它。相反,想要使用 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);

关于java - 在 Android 中使用命名空间常量的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5658312/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com