我正在学习Java反射并尝试访问使用@hide隐藏的方法
getInstance
(https://android.googlesource.com/platform/frameworks/base/+/refs/heads/main/core/ java/android/app/ActivityTaskManager.java)第 149 行。
但是,我不断收到 NoSuchMethodException。
val taskManager = Class.forName("android.app.ActivityTaskManager")
val myInstance = taskManager.getMethod("getInstance")
myInstance.setAccessible(true)
val retval = myInstance.invoke(null)
我感谢任何指导。
通过反射调用方法的示例(需要传递对象实例和参数类型)
public class MyClass {
public String method1(String param1){
return param1.toUpperCase();
}
}
通过反射调用
try {
MyClass objectInstance = MyClass.class.getConstructor().newInstance();
Method methodToInvoke = MyClass.class.getDeclaredMethod(
"method1", // method name
String.class // type first parameter
);
String returnMethod = (String) methodToInvoke.invoke(
objectInstance, // class instance
"valueParam1" // first param value
);
System.out.println(returnMethod); // VALUEPARAM1;
} catch (ReflectiveOperationException | IllegalArgumentException | SecurityException e) {
e.printStackTrace();
}
与MyClass.class
相同 与Class.forName("MyClass")
相同objectMyClass.getClass()