• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

Kotlin中val const JvmField JvmStatic的差�


Recommended Posts

这篇文章的地址

目录

目录val const JvmField JvmStatic四个关键字的基本含义从Java的角度看const和JvmField的区别

val const JvmField JvmStatic

四个关键字的本质含义

瓦尔的意思是不可变,相当于决赛

因此,它有一个getter但没有setter,因为有一个setter违反了它的不可变属性。

Const表示等同于静态最终的常量,

所以它只能修改val属性,不能修改var属性,因为修改var违背了它的常量特性。

修饰符const不适用于变量

@JvmField的意思是字段,也就是可被直接访问.

用它修饰的属性将被直接访问,而不是通过getter/setter方法间接访问(这两种方法都不是)。

所以它不能修改private属性,因为修改private违反了它的直接可访问属性。

@JvmField对私有属性没有影响

@JvmStatic的意思是专为对付Java中的静态而生的static,

当作用于属性时,它将使其get/set方法成为静态的。请注意,属性本身不是静态的。

当作用于一个方法时,它将使该方法成为静态的。

唯一的意义就是用Java调用Kotlin的时候和用Kotlin调用Kotlin的时候一样友好。

只有named_objects和companion_objects中的成员可以用@JvmStatic进行注释

const 和 JvmField 的区别

@JvmField可以修改var/val,const只能修改常量val。

@JvmField不能与private一起使用,const可以与private一起使用。

@JvmField可以在普通类中使用,const只在对象或顶层使用。

const_val只允许在顶层或对象中使用

可以在对象中使用const_val来代替@JvmField_val

从 Java 的角度来看

Kotlin中的一个常见属性:不能直接访问,需要通过其getter/setter间接访问。

class/object中的var有getter和setter,相当于private。

类/对象中的Val有getter没有setter,相当于private final。

注意,从Java的角度来看,object中的var/val还是一个普通属性,不是静态属性。

因为属性需要通过对象实例间接访问,例如:Man。INSTANCE.getName()

kot Lin:可以直接访问,中的@JvmField属性,并且没有getter/setter方法。

类中的@JvmField var相当于public,需要被object访问。

类中的@JvmField val相当于public final。

object中的@JvmField var相当于public static,可以直接从object中访问。

对象中的@JvmField val等效于public static final,将被IDE提示更改为const val。

kot Lin:静态变量/静态常量,中的Const属性,并且没有getter/setter方法。

object中的Const val等效于@JvmField val,等效于public static final。

object中的Private const val相当于private static final,只能在object内部访问。

2022-5-4

Link to comment
Share on other sites