我有以下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}
谢谢
答案 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
上的官方文档