Я пытаюсь понять, как рефлексия работает с делегированием, и я придумала игрушечный пример.
class Foo(val m: MutableList<Any>) : MutableList<Any> by m{
}
fun fooAdd(f: Foo) {
val a = f::class.java.getMethod("add").invoke(f, 20);
println(a)
}
fun main(args: Array<String>) {
fooAdd(Foo(mutableListOf()))
}
Это дает мне ошибку:
Exception in thread "main" java.lang.NoSuchMethodException: Foo.add()
Я не уверен, что понимаю, почему это происходит, поскольку add()
делегировано Foo
из MutableList
если я правильно понимаю.
Как мне исправить эту ошибку?Кроме того, есть ли библиотека, которую следует использовать для такого варианта использования?