В динамическом языке для Java, где все переменные объявлены как java.lang.Object
, мне нужно вызывать встроенные классы Java. Например, конструктор java.math.BigDecimal
может принимать число, строку и т. д.
a = 10 // a is `java.lang.Object`
create java.math.BigDecimal(a) // should call constructor that accept number
a = '1.234' // a is `java.lang.Object`
create java.math.BigDecimal(a) // should call constructor that accept String
Существуют ли java.lang.invoke
, которые я могу использовать для создания соответствующих MethodHandle
? MethodHandle
должен принимать java.lang.Object
в качестве аргумента, но при вызове он должен вызывать соответствующий конструктор.