У меня есть класс машинописи, и он принимает любой в качестве имени члена:
interface ControlTagType {
type?: String | null;
[name: string]: any
}
class ControlTag {
tagSource: String | null = null;
tag: ControlTagType | null = null;
}
export { ControlTag };
, поэтому я могу использовать этот класс в vuejs следующим образом:
controlTag.push({ tagSource: 'USER', tag: { type: 'X', TAG_1: 'TAG_X' } });
controlTag.push({ tagSource: 'AUTO', tag: { type: 'Y', TAG_2: 'TAG_Y' } });
This Это единственное решение для моей другой проблемы.
Но я не смог найти, как достичь этого обобщенного c члена в kotlin:
У меня есть класс enum, и я использовал его, пока сериализация:
@JsonValue
fun value(): X {
return X( this.name : this.name)
}
, например
data class X(val [name: string]: any)
Я могу сделать следующее, но это слишком сложно и должно быть сделано для каждого класса:
@JsonValue
fun value(): Any? {
when (this.name) {
XX_XX.name -> {
return object {
var XX_XX: String = name
}
}
YY_YY.name -> {
return object {
var YY_YY: String = name
}
}
ZZ_ZZ.name -> {
return object {
var ZZ_ZZ: String = name
}
}
else -> return null
}
}
Также в этой реализации он преобразует имя параметра в нижний регистр:
{"type":"XX","xx_XX":"XX_XX"}