Kotlin相当于php的$ object-> {$ key}

时间:2019-10-03 02:17:05

标签: php kotlin

我有以下Kotlin课:

class Program {
    @SerializedName("hrs0")
    var nHrs0: Int? = null
    @SerializedName("hrs1")
    var nHrs1: Int? = null
}

我需要从此类引用一个变量,但是我只有变量名作为字符串。通常,我会这样使用它:

Program.nHrs0 = 5;

我需要能够分配该值,但是我只有与变量名等效的字符串。在php中,我会这样做:

$program->{$variableName}

如何在Kotlin中完成

variableName = "nHrs0"
Program.{variableName}

谢谢

2 个答案:

答案 0 :(得分:0)

在这种情况下,您将使用地图,然后将值应用于程序

// create Map
val programMap = mutableMapOf<String, Int>()
// apply value to key
programMap["nHrs0"] = 5

val program = Program()
// get value from key
program.nHrs0 = programMap["nHrs0"]

答案 1 :(得分:0)

您可以使用Kotlin反射API进行此操作。第一步是将Kotlin反射运行时添加到您的项目中,因为默认情况下不包含它,因为它的大小/开销和相对较少的使用。我使用Kotlin int numberOfOperations = integer == 0 ? 0 : Integer.bitCount(integer) + Integer.SIZE - Integer.numberOfLeadingZeros(integer) - 1; ,它是当前的最新版本。如果使用旧版本,请更改为使用的版本:

1.3.50

在这种情况下,这是您使用此API的方式:

implementation 'org.jetbrains.kotlin:kotlin-reflect:1.3.50'

有关属性如何在Kotlin中工作的更多信息,请参阅Properties and Fields上的官方文档。有关反射API的更多信息,请参阅Reflection

上的官方文档