Как вызвать метод с модификатором доступа private вне класса, в котором находится этот метод?
У меня есть класс Test
import android.graphics.Region
class Test {
private val mRegionInScreen = Region()
private fun setRegionInScreen(region: Region) {
mRegionInScreen.set(region)
}
}
Мне нужно вызвать метод setRegionInScreen вне класса Test
Я пытался сделать это с помощью следующего кода
val test = Test()
val method = Test::class.java.getMethod("setRegionInScreen", Region::class.javaPrimitiveType)
method.invoke(test, Region(0, 0, 500, 500))
Но этот код выдает ошибку java.lang.NoSuchMethodException: parameter type is null
Как мне вызвать метод setRegionInScreen вне класса Test?
Ответы (1 шт):
Автор решения: Eugene Krivenja
→ Ссылка
Немного по-другому надо.
val test = Test()
val method = Test::class.java.getDeclaredMethod("setRegionInScreen", Region::class.java)
method.isAccessible = true
method.invoke(test, Region(0, 0, 500, 500))
Метод getMethod() ищет только публичные методы.
https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getMethod-java.lang.String-java.lang.Class...-
Returns a Method object that reflects the specified public member method of the class or interface represented by this Class object.