Android开发:Kotlin/Java是否内置含冒号分号等符号的常量对象?
Java、Kotlin官方标准库以及Android核心SDK中,不存在专门集中存放通用标点符号常量的预置对象/类,你之前自定义Symbols常量类的做法是Android开发中非常普遍的实践,完全可以继续沿用。
现有相关常量的实际情况
目前你能在标准库、SDK里找到的符号类常量都是零散分布的,且和所属类的业务逻辑强绑定,不适合作为全局通用符号使用:
- 比如
java.io.File类下的separator常量是文件路径分隔符,java.util.regex.Pattern里存了正则相关的转义符号常量,Android SDK的TextUtils里仅提供了逗号COMMA这一个标点常量,Intent类里的冒号、斜杠等常量是专门给Intent规则拼接用的。 - 这些常量的设计初衷是服务于所属类的特定功能,如果你为了拿个冒号、分号去依赖这些业务类,反而会让代码的语义变得混乱,平白增加不必要的耦合。
为什么标准库没有提供这类通用封装
这类通用符号集合本身没有统一的收录边界:不同项目需要用到的标点差异极大,有的只需要半角常用标点,有的需要全角符号、数学符号、特殊排版符号,标准库维护方不可能做一个覆盖所有需求、边界模糊的常量类。而且这类短字符串/单字符字面量,直接写和引用常量的运行时性能没有任何差异,专门封装的收益极低。
实用建议
- 你之前写的
Symbols常量类可以直接在新项目里复用,只需要收录当前项目里高频用到的通用符号即可,不用为了“全面”把所有标点都塞进去,避免类冗余。 - 不要把和业务逻辑绑定的特殊符号(比如接口签名拼接用的固定连接符、路由规则里的专属标记符)放到这个通用常量类里,这类常量应该归到对应业务模块的常量定义中,避免通用类被污染。
- 不需要为了省这点定义常量的工作量专门引入第三方工具库,这类库自带的符号常量覆盖范围往往和你的需求不匹配,还会增加Android项目的方法数、包体积负担。
内容的提问来源于stack exchange,提问作者M'aiq the Coder
相关产品推荐
相关产品推荐

