Kotlin变量默认不是public了么


#1

类的局部变量声明后看对应的字节码是private,导致有的注解编译不过,但看文档写的默认是public,这种情况就只能用java写了,有遇到这个问题的么


#2

属性是private的,但是生成的有public的getter setter方法


#3

官方文档是这么写的:
类、对象、接口、构造函数、方法、属性和它们的 setter 都可以有 可见性修饰符 。 (getter 总是与属性有着相同的可见性。) 在 Kotlin 中有这四个可见性修饰符: privateprotectedinternalpublic 。 如果没有显式指定修饰符的话,默认可见性是 public

而且自己手动加上public是无效的,但加上 lateinit 字节码里又是public的了,不懂了


#4

加一个jvmfield的注解。


#5

这个方法是可以的,变量变成了public,不自动生成get/set方法
好奇的是官方文档一直是错的,还是某个版本改成了这样


#6

官方文档的意思是相对于kotlin是public的,所以是正确的:thinking:


#7

官方稳文档没问题的。注意理解kt的property和java field的区别。


#8

理解了,感谢指点!


京ICP备16022265号-2 Kotlin China 2017 - 2018