Java 创造;“公众”;kotlin类中的常量
也许这是一种不好的做法,但在Java中,我经常创建如下内容:Java 创造;“公众”;kotlin类中的常量,java,android,kotlin,constants,Java,Android,Kotlin,Constants,也许这是一种不好的做法,但在Java中,我经常创建如下内容: public class MyService extends Service { public static final String ACTION_CONNECTED = "blablabla"; ... } 并在另一个类中引用它,如: MyService.ACTION_CONNECTED 这太棒了。我可以将我的常量与它们的类很好地关联起来 我在科特林似乎找不到一个类似的例子。我看到很多建议人们创建常量文件(对象)的解决
public class MyService extends Service {
public static final String ACTION_CONNECTED = "blablabla";
...
}
并在另一个类中引用它,如:
MyService.ACTION_CONNECTED
这太棒了。我可以将我的常量与它们的类很好地关联起来
我在科特林似乎找不到一个类似的例子。我看到很多建议人们创建常量文件(对象)的解决方案,但我认为这不是很优雅。我希望有某种方法可以在文件外公开顶级的const val BLAB
,这样我就可以继续使用ClassName.CONSTANT
语法,但它看起来不像是在卡片中
在类之间共享常量方面,是否存在(以及它是什么)Kotlin与旧的公共静态final
相等
class MyService {
companion object {
@JvmStatic const val ACTION_CONNECTED = "blablabla"
}
}
MyService.ACTION_CONNECTED
根据Jetbrains在本视频中的说法,这将相当于kotlin的公共静态决赛: 有3种方法可以为类创建静态方法或函数:
val ACTION_CONNECTED = "blablabla"
class MyService :Service{
//your other class details
}
您可以像这样从另一个Kotlin文件或活动访问它:
val myAction=ACTION_CONNECTED
如果将其标记为const也会更好,因为它是一个常量值,如下所示:
const val ACTION_CONNECTED = "blablabla"
class Counter{
companion object{
val lastCount = 1
}
}
如果要在kotlin中创建最终变量,请使用
val
而不是var
val LastCount = 1
对于创建静态变量,请使用伴生对象
键
companion object{
val lastCount = 1
}
现在您想在其他类中访问此变量。
因此,创建一个新类,如下所示:
const val ACTION_CONNECTED = "blablabla"
class Counter{
companion object{
val lastCount = 1
}
}
然后像这样在整个项目中使用它
Counter.lastCount
如果您的静态变量或方法仅从Java引用,您还可以为Java添加@JvmStatic注释,如
MyService.ACTION\u CONNECTED
static syntaxI不会说“仅从Java”;如果它们同时从Java和Kotlin中引用,这也很有用。我一直在使用伴随对象,但在文档中这种范围对我来说从来都不明显。出于某种原因,我认为您只能访问关联类中的伴生对象中的内容。额外的MyService.ACTION\u CONNECTED
起了作用。谢谢这是我在StackOverflow中的第一个答案:Dyeah,这就是我为什么要发表评论的原因。而不是旗帜I’我会尽量多加评论和描述,这样你的答案就不会得到反对票。我会记住的。谢谢。这回答了你的问题吗?我想我要寻找的是,在Java中,常量是如何作用于类(不是全局的),而是公共的。我认为这使代码更具可读性,并且能够重用常量名称而不产生歧义也很好。也就是说,它实际上看起来像是我想要的伴星!似乎没有人能让那个示例用例变得显而易见(至少对我来说)。