个性化阅读
专注于IT技术分析

如何从Java中的另一个类调用私有方法

你可以通过更改类的运行时行为从类外部调用私有方法。

借助于java.lang.Class类和java.lang.reflect.Method类, 我们可以从任何其他类调用私有方法。


方法类的必需方法

1)public void setAccessible(boolean status)抛出SecurityException设置方法的可访问性。

2)公共对象invoke(对象方法, 对象… args)抛出IllegalAccessException, IllegalArgumentException, InvocationTargetException用于调用该方法。


Class类的必需方法

1)公共方法getDeclaredMethod(String name, Class [] parameterTypes)引发NoSuchMethodException, SecurityException:返回一个Method对象, 该对象反映指定的声明的类或该Class对象表示的接口的方法。


从另一个类调用私有方法的示例

让我们看一下从另一个类调用私有方法的简单示例。

public class A {
  private void message(){System.out.println("hello java"); }
}
import java.lang.reflect.Method;
public class MethodCall{
public static void main(String[] args)throws Exception{

	Class c = Class.forName("A");
	Object o= c.newInstance();
	Method m =c.getDeclaredMethod("message", null);
	m.setAccessible(true);
	m.invoke(o, null);
}
}
Output:hello java

从另一个类调用参数化私有方法的另一个示例

让我们看一下从另一个类调用参数化私有方法的示例

class A{
private void cube(int n){System.out.println(n*n*n);}
}
import java.lang.reflect.*;
class M{
public static void main(String args[])throws Exception{
Class c=A.class;
Object obj=c.newInstance();

Method m=c.getDeclaredMethod("cube", new Class[]{int.class});
m.setAccessible(true);
m.invoke(obj, 4);
}}
Output:64
赞(0)
未经允许不得转载:srcmini » 如何从Java中的另一个类调用私有方法

评论 抢沙发

评论前必须登录!