Я пытаюсь выяснить Reflection с этим Android класс:Android Reflection Method Ошибка
Class<?> c = Class.forName("com.android.internal.widget.LockPatternUtils");
Method method = c.getDeclaredMethod("getKeyguardStoredPasswordQuality");
method.setAccessible(true);
Object object = method.invoke(c); // Error with this line
result = object.toString());
Метод getKeyguardStoredPasswordQuality
объявлен как (без параметров):
public int getKeyguardStoredPasswordQuality() {
// codes here
}
Ошибка у меня есть :
Exception: java.lang.IllegalArgumentException: expected receiver of type com.android.internal.widget.LockPatternUtils, but got java.lang.Class<com.android.internal.widget.LockPatternUtils>
Как объявить com.android.internal.widget.LockPatternUtils
в качестве приемника?
Можете ли вы расширить свой ответ так, как это сделать? Object clazz = c.newInstance(); 'затем передать clazz в' Object object = method.invoke (clazz); 'будет работать, только если конструктор ссылочного класса пусто. Что вы делаете в случае, когда конструктор класса определяется как 'public LockPatternUtils (контекст контекста) {..}'? – ChuongPham
Я буду отмечать ваш ответ как правильный, показывая мне doco на метод 'newInstance'. Спасибо друг. – ChuongPham
@ChuongPham: Конечно, есть некоторые ограничения, но они задокументированы в API, к которому я привязываюсь. – Keppil