我想弄清楚的反思與該Android類:Android的反射法錯誤
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
作爲接收器?
你能對你的解答爲這樣'對象clazz中= c.newInstance()擴展;'然後傳遞'Object對象= method.invoke(clazz所)clazz中;'只會工作,如果被引用類的構造函數是空的。在類的構造函數被定義爲'public LockPatternUtils(Context context){..}'的情況下,你做了什麼? – ChuongPham
我會通過向'newInstance'方法展示doco來標記你的答案是正確的。謝了哥們。 – ChuongPham
@ChuongPham:當然,有一些限制,但它們記錄在API鏈接到的API中。 – Keppil