首页 > 解决方案 > 等效于 Java 的“公共静态最终字符串”

问题描述

在我的 Java 项目中,我有一个类,我在其中使用公共静态最终字符串属性声明了许多项目常量:

public class Constants {
    public static final String KIND_NAME = "user";
    public static final String AVATAR_IMAGE_ID = "avatarImageId";
    public static final String AVATAR_IMAGE_URL = "avatarImageUrl";
    public static final String NAME_COLUMN = "name";
    public static final String TOTAL_SCORE_COLUMN = "totalScore";
    ...
}

所以我可以在我的项目的许多不同地方使用它:

...
String userName = user.getProperty(Constants.KIND_NAME);
...

到目前为止,我已经找到了一些在 Kotlin 中实现这一点的不同方法,例如:伴生对象数据类。Kotlin 中最好的等效代码是什么?

标签: kotlin

解决方案


@Todd 的答案会产生一个INSTANCEclass 的实例Constants,这有时是出乎意料的。更好的选择是:

// file-level
@file:JvmName("Constants")
const val KIND_NAME = "user"
const val AVATAR_IMAGE_ID = "avatarImageId"
const val AVATAR_IMAGE_URL = "avatarImageUrl"
const val NAME_COLUMN = "name"
const val TOTAL_SCORE_COLUMN = "totalScore"

推荐阅读