两个构造函数有什么不同?

这种types的构造函数有什么不同?

class ColorsArray(context: Context) {} 

 class ColorsArray(var context: Context){} 

第二个类不仅声明了一个带有Context的构造函数,而且它还有一个名为context的属性,用于保存传递给构造函数的值。 你可以像这样访问它:

 val colorsArray = ColorsArray(context) println(colorsArray.context) 

既然你声明它是一个var而不是一个val ,这也可以重新分配。

 colorsArray.context = someOtherContext 

在主构造函数中声明的属性在这里的文档中有介绍。

在第一种情况下,构造函数需要一个context参数,并且什么也不做。

在第二种情况下,代码示例提供了:

 class ColorsArray(var context: Context) { } 

是一个捷径:

 class ColorsArray(context: Context) { var context: Context = context }