相当于Java的'public static final string'

Car*_*Lee 5 kotlin

在我的Java项目中,我有一个类,我使用public static final String属性声明了许多项目常量:

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";
    ...
}
Run Code Online (Sandbox Code Playgroud)

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

...
String userName = user.getProperty(Constants.KIND_NAME);
...
Run Code Online (Sandbox Code Playgroud)

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

ice*_*000 10

@Todd的答案将产生一个INSTANCE类的实例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"
Run Code Online (Sandbox Code Playgroud)


Ian*_*kel 0

您可能想要使用class带有 acompaion object和一些const vals 的简单形式:

class Constants {
    companion object {
        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"
    }
}
Run Code Online (Sandbox Code Playgroud)