驽马十驾

驽马十驾,功在不舍

目录
Kotlin 系列:kotlin下如何定义java中的常量?
/  

Kotlin 系列:kotlin下如何定义java中的常量?

Kotlin中定义常量

在Java中,我们可以使用如下代码定义常量。

private static final double PI = 3.14159265;

上述代码是在:代码编译的时候处理的。

那么在kotlin中如何处理了?

刚开始我以为是

val PI=3.14

但是反编译代码可以发现,这个代表的是Java中的

double PI = 3.1415D;

好吧,连一个final都没有!

接下来尝试了下在一个kt文件的顶层定义Cth.kt如下代码

val PX = 3.14
class XX{}
class YY{}

发现反编译值之后PX会存在一个的类中

public final class CthKt {
   private static final double PX = 3.14D;
}

请注意命名,自动生成了一个基于文件名+kt后缀的文件。

但是这还不是我想要的,那么如何做才是我们Java中的常量了,看下面的代码:

class Test1 {
    companion object {
        private const val PY = 3.1415
        const val PZ = 3.1
    }
}

反编译之后的java代码是:

public final class Test1 {
   private static final double PY = 3.1415D;
   public static final double PZ = 3.1D;
	//...省略其他
}

这下清楚了,原来通过companion object这个伴生对象来搞定这个事情啊。

不积跬步,无以至千里。不积小流,无以成江海。
评论