如何在Kotlin的类外部定义静态init块?

时间:2019-02-06 12:08:37

标签: arraylist kotlin

我有实用程序文件 Utility.kt

这里我定义了一些常量,例如

val DATE_FORMAT = DateTimeFormatter.ofPattern("yyyyMMdd")
const val UTC_TIMEZONE = "UTC"

现在我需要定义包含2个元素的列表。我找不到以静态方式编写它的方法。我需要

之类的东西
val DEFAULT_LIST = ArrayList<MyObj>()
val one = MyObj("one")
val two = MyObj("two")
DEFAULT_LIST.addAll(one,two)

即仅创建一次列表和对象。我可以使用随播对象。但是现在我只使用不带类的文件。

有可能吗?

3 个答案:

答案 0 :(得分:4)

最通用的解决方案是调用m_buffer,该方法不接受任何参数,并产生作为块结果的值。只需对代码进行最少的更改:

run

答案 1 :(得分:1)

您可以使用expo build:ioslistOf和参数创建列表:

arrayListOf

或者如果您确实需要更复杂的对象创建,例如val DEFAULT_LIST = listOf(MyObj("one"),MyObj("two")) ,使用范围函数applyalso进行初始化。 两者都返回接收者(this),您可以将其分配给变量:

ArrayList

答案 2 :(得分:0)

如果我理解这个问题,通常的方法是使用listOf()函数。

如果您不需要保留对两个对象的单独引用,则可以执行以下操作:

val DEFAULT_LIST = listOf(MyObj("one"), MyObj("two"))

或者,如果您这样做:

val one = MyObj("one")
val two = MyObj("two")
val DEFAULT_LIST = listOf(one, two)

如果要对列表的确切类型进行更多控制,可以使用mutableListOf()arrayListOf(),或调用采用一系列项目的构造函数(例如LinkedList(listOf(one, two)))。