通过反射访问类的私有方法(无参)

2019-04-25 06:53:20来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

Person类:

package com.fanshe.entity;

public class Person {
    private String name;
    private int age;
    
    private void fun(){
        System.out.println("奔跑吧骚年!");
    }
    
    private void fly(){
        System.out.println("要上天!");
    }
}

测试类:

package com.fanshe.test;

import java.lang.reflect.Method;
import org.junit.Test;
import com.fanshe.entity.Person;

public class PersonTest {
    @Test
    public void test1() throws Exception{
        //1.获取Person类的类类型
        //Class c = Person.class;
        Class c = Class.forName("com.fanshe.entity.Person");//在不知道类名的情况下,一般用这种方法,例如Tomcat创建servlet对象,<servlet-class>标签中的类名
        //2.使用类类型创建对象
        //Person p = (Person) c.newInstance();
        Object p = c.newInstance();
        //3.创建一个方法的反射对象
        //Method m = c.getMethod("fun");//这是获取到public的方法,如果是私有方法则会报错
        Method m = c.getDeclaredMethod("fun");//获取私有方法
        //也可以创建方法反射对象数组,这种方法是在不知道Person中方法名的情况下使用
        //Method[] ms = c.getDeclaredMethods();
        //if (ms.length > 0) {
        //    for (Method m : ms) {
        //        //设置对私有方法的访问权限
        //        m.setAccessible(true);
                //执行方法
        //        m.invoke(p);
        //    }
        //}
        //4.设置对私有方法的访问权限
        m.setAccessible(true);
        //5.执行方法
        m.invoke(p);
    }
}

执行结果:

 


原文链接:https://www.cnblogs.com/wrf-hsj/p/10755992.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:SpringBoot启动原理及相关流程

下一篇:初学Shiro