Исправление NoSuchMethodException с помощью Kotlin Reflection в частных функцияхJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Исправление NoSuchMethodException с помощью Kotlin Reflection в частных функциях

Сообщение Anonymous »


Я пытаюсь вызвать частную функцию Kotlin, которая принимает примитивное целое число и строку в качестве параметров, используя отражение, но сталкиваюсь с исключением NoSuchMethodException. Ниже приведен код класса, содержащего частную функцию и тестовую функцию, которую я пытаюсь вызвать:

класс DataKey { личное развлечение test22(num: Int, str: String): Int { // Реализация функции вернуть 1 } } Вот тестовая функция, в которой я пытаюсь вызвать test22:

класс DataKeyTest { частный вал dataKey = DataKey() @Тест весело `INITK test`() = runBlocking { val result = UnitTestReflectionHelper.invokePrivate(dataKey, «test22», 1, «Hello») как Int Assert.assertEquals(результат, 1) } } Класс UnitTestReflectionHelper определяется следующим образом:

класс UnitTestReflectionHelper { сопутствующий объект { inline fun ignorePrivate(экземпляр: T, имя метода: String, параметры vararg: Любой?): Любой? { val метод = T::class.java.getDeclaredMethod(methodName, *params.map { it?.javaClass }.toTypedArray()) метод.isAccessible = правда return метод.invoke(экземпляр, *params) } } } Когда я запускаю тест, я получаю следующую ошибку:

java.lang.NoSuchMethodException: co.service.provider.DataMada.test22(java.lang.String, java.lang.Integer)

Похоже, что проблема связана с тем, как Kotlin автоматически упаковывает примитивные типы и как отражение Java требует явного сопоставления типов. Как я могу изменить свой метод ignorePrivate, чтобы он обрабатывал это несоответствие типов и правильно вызывал метод test22?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Reflection.typeinfo/Reflection.Type не имеет метода GetProperties/GetFields
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • API данных Youtube — получение частных и частных плейлистов
    Anonymous » » в форуме Php
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • API данных Youtube — получение частных и частных плейлистов
    Anonymous » » в форуме Php
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • API данных Youtube — получение частных и частных плейлистов
    Anonymous » » в форуме Php
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Nosuchmethodexception в уведомлениях Синквейдер с ручным и рабочим манажером (Kotlin, Hilt 2.56.2, Workmanager 2.9.0)
    Anonymous » » в форуме Android
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»