所以,我有一个看起来像这样的 Scala 类:
class TestClass {
var value: Option[Int] = None
}
我正在解决一个问题,我有一个 String 值,我想在运行时使用反射将它强制转换为 Option[Int] 。所以,在另一段代码(对TestClass一无所知)中,我有一些这样的代码:
def setField[A <: Object](target: A, fieldName: String, value: String) {
val field = target.getClass.getDeclaredField(fieldName)
val coercedValue = ???; // How do I figure out that this needs to be Option[Int] ?
field.set(target, coercedValue)
}
为此,我需要知道该字段是一个选项,并且选项的类型参数是 Int。
我有什么选择可以在运行时确定“值”的类型是 Option[Int](即使用反射)?
我已经看到通过注释字段解决了类似的问题,例如@OptionType(Int.class)。如果可能的话,我更喜欢不需要在反射目标上注释的解决方案。