怎么获取私有的方法

来源:5-1 Java 方法反射的基本操作

北冥有鱼其名为昆

2019-08-29 17:05

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回答

  • hermaniu
    2022-11-11 23:22:02
    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!");
        }
    
    }


    herman...

    使用私有需要获取私有 利用getDeclaredMethod 然后设置访问"允许" 便可invoke调用

    2022-11-11 23:24:07

    共 1 条回复 >

  • weixin_慕数据4408848
    2020-03-28 23:10:03

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

  • 丶非要较真
    2019-09-16 19:29:12

    setAccessible

    http://img4.mukewang.com/5d7f71e80001265814430933.jpg

    http://img3.mukewang.com/5d7f71e80001871c14433811.jpg


  • 北冥有鱼其名为昆
    2019-08-29 17:27:36

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

  • 精慕门6581428
    2019-08-29 17:25:06

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

反射——Java高级开发必须懂的

反射,Java高级开发必须要懂的知识点,学好Java高级课程的基础

151467 学习 · 335 问题

查看课程

相似问题