反射系列之属性方法(调用私有方法,获得属性值)
发布日期:2021-06-30 20:37:26 浏览次数:2 分类:技术文章

本文共 1798 字,大约阅读时间需要 5 分钟。

import java.lang.reflect.Field;import java.lang.reflect.Method;class Preson {    private String name = "liuqiang";    private int age = 23;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    private int display(String info,int id){        System.out.println("打印信息:"+info);        return id;    }    @Override    public String toString() {        return this.name + "-->" + this.age;    }}public class ReflectDemo {    public static void main(String[] args) {        test(Preson.class);    }    public static 
void test(Class
cls) { try { Object obj = Class.forName(cls.getName()).newInstance();//1.通过类名创建新实例 Class classBean = obj.getClass(); //2.获取该新实例的类 Field[] fields = classBean.getDeclaredFields(); //3.取得该类的所有成员变量 //反射属性 for (Field field : fields) { field.setAccessible(true);//4.取消对每个属性的安全检查(说白了,也就是允许私有变量) System.out.println("属性类型:" + field.getType() + "\t属性名:" + field.getName() + "\t属性值:" + field.get(obj)); } //反射方法 Method[] methods = classBean.getMethods(); for (Method m : methods) { System.out.println(m.getName()); } //调用私有方法 参数一:指定调用的方法名 参数二:指定方法后面的参数类型 Method displayMethod = classBean.getDeclaredMethod("display", String.class, int.class); displayMethod.setAccessible(true);//取消对此私有的方法的安全检查 Object liuqiang = displayMethod.invoke(obj, "liuqiang", 23);//调用 System.out.println(liuqiang); } catch (Exception e) { e.printStackTrace(); } }}

转载地址:https://liuqiang.blog.csdn.net/article/details/79761192 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:反射系列之构造方法
下一篇:反射系列之属性Field反射

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月26日 06时18分54秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章