Java类名中的Kotlin中的静态常量

我通常在Java中有这个:

package some.package; public class Clz { public static final String ACTION_DIVE = Clz.class.getName() + ".action.DIVE"; } 

可以从Clz.ACTION_DIVE以外的类访问,值为"some.package.Clz.action.DIVE"

我怎么能在Kotlin class Clz做同样的Clz以便可以从外部的Java类以相同的方式访问它? 我尝试了以下,但它不编译,因为它不是一个常量:

 package some.package object Clz { const val ACTION_DIVE = Clz.javaClass.name + ".action.DIVE" } 

Clz::class.java.name

请参阅官方Kotlin文档中的类引用 。

您可以使用:

 object Clz { val ACTION_DIVE = Clz::class.java.name + ".action.DIVE" } 

请注意,由于它调用java扩展属性, ACTION_DIVE可能不是const

如果你确实需要一个const,你可以这样做:

 object Clz { const val ACTION_DIVE = "" + Clz::class + ".action.DIVE" } 

你可以在你的类中声明一个companion object并把常量属性放在里面。

 class Clz { companion object{ var ACTION_DIVE = Clz::class.simpleName + ".action.DIVE" } } 

然后你可以访问该属性

 println(Clz.ACTION_DIVE) 

一个优雅的方式来连接字符串:

 package some.package object Clz { val ACTION_DIVE = "${Clz::class.java.name}.action.DIVE" } 

为我工作:

 class FetchWeatherTask : AsyncTask<Void,Void,String>() { companion object { @JvmField val TAG: String = FetchWeatherTask().javaClass.simpleName } }