Код отражения Java в моем приложении Android вызывает открытый статический метод в пакете B из пакета A.
Недавно, после некоторых обновлений Gradle, я не могу вызвать тот же метод. Моя реализация терпит неудачу с исключением NoSuchMethodFound. Как я могу получить реализацию, чтобы можно было найти этот метод?
Я попытался распечатать все доступные методы из класса. Результатом являются все публичные нестатические методы. Нет доступных статических методов для вызова. Метод, который я хочу вызвать, является статическим методом «getInstance», который инициализирует класс и возвращает единичный экземпляр.
Телефонный код:
implementationClass = Class.forName(CLIENT_CLASS_NAME, false, ClientProvider.class.getClassLoader());
final Method method = implementationClass.getMethod("getInstance", (Class[]) null);
result = method.invoke(null, (Object[]) null);
Вызываемый код:
/**
* Public static method to be reflected.
*/
public static ClientImpl getInstance() {
return ClientImplHolder.INSTANCE;
}
/**
* Private class used to hold the lazily initialized singleton instance.
*/
private static class ClientImplHolder {
private static final ClientImpl INSTANCE = new ClientImpl();
}
При попытке getMethod я получаю исключение NoSuchMethodException.
Не уверен, что я здесь делаю неправильно, благодарю за любую помощь. Спасибо!