java 集成私有方法,如何从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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值