为了账号安全,请及时绑定邮箱和手机立即绑定

怎么获取私有的方法

private void   ceshi(int a){
    System.out.println("0000000000");
}
    ceshi a=new ceshi();
Class c=a.getClass();
    try {
        Method m=c.getMethod("ceshi",int.class);
        m.invoke(a,1);
    }catch (Exception e){
        e.printStackTrace();
    }


正在回答

5 回答

package com.herman.reflect;


import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class ClassDemo03 {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {

        A a = new A();
        Class<? extends A> aClass = a.getClass();
        Method self = aClass.getDeclaredMethod("self");

        self.setAccessible(true); //暴力反射  
        self.invoke(a);
    }
}

class A {
    public void printf(String a) {
        System.out.println("printf...." + a);
    }

    private void self() {
        System.out.println("Access denied!");
    }

}


0 回复 有任何疑惑可以回复我~
#1

hermaniu

使用私有需要获取私有 利用getDeclaredMethod 然后设置访问"允许" 便可invoke调用
2022-11-11 回复 有任何疑惑可以回复我~

首先你要明白它的访问权限,了解后,根据相应权限用get方法就行

0 回复 有任何疑惑可以回复我~

setAccessible

http://img1.sycdn.imooc.com//5d7f71e80001265814430933.jpg

http://img1.sycdn.imooc.com//5d7f71e80001871c14433811.jpg


0 回复 有任何疑惑可以回复我~

我已经通过度娘知道答案了。可以获取

1 回复 有任何疑惑可以回复我~

我也想问,应该是不行的吧,如果可以用反射获得private方法太不安全了,那public和private一点区别也没了

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

怎么获取私有的方法

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信