首页 > 解决方案 > kotlin 中的 data 和 dataa 属性有什么不同?

问题描述

两者有什么不同?

fun main(){
class A<T>(name : T){
    val dataa : T = name     // <-- no problem using private modifier or not
    fun getData() : T = dataa
}

class B<T>(name : T){
    val data : T = name
    //^^^ i get the error and i have to use private modifier or use the @JvmField
    fun getData() : T = data
   }
}

val data和有什么区别val dataa

datakotlin 中的默认属性吗?

标签: kotlinpropertiesaccess-modifiers

解决方案


data是 Kotlin 中的关键字(如class, fun,...),因此您不能将其用作标识符。

(StackOverflow 代码荧光笔清楚地说明了这一点:在问题中,您可以看到它data是蓝色的,例如val。)

如果您确实需要将您的属性称为“数据”,则可以在使用它的任何地方用反引号将其括起来。但选择另一个名字几乎总是更好。

此外,正如 Animesh 在评论中指出的那样,您不需要定义 getter 方法;Kotlin 会为每个(非私有)属性自动生成一个。如果需要,您可以覆盖它,但其语法不同。


推荐阅读