Итак, у меня есть класс 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). Я бы предпочел решение, которое не требует аннотаций к цели отражения, если это возможно.