设为首页 加入收藏

TOP

Java反射机制点滴知识(四)
2019-09-14 00:54:04 】 浏览:222
Tags:Java 反射 机制 点滴 知识
/ 获取私有的成员变量
        for (Field field : fields) {
        System.out.println("公共的成员变量"+field);
        }
        for (Field field : declaredFields) {
            System.out.println("私有的成员变量"+field);
        }


        // 通过无参构造方法创建对象
        Constructor con = c.getConstructor();
        Object obj = con.newInstance();


        // 获取单个的成员变量
        // 获取address并对其赋值
        Field addressField = c.getField("address");
        // public void set(Object obj,Object value) 将指定对象变量上此 Field 对象表示的字段设置为指定的新值。
        addressField.set(obj, "北京"); // 给obj对象的addressField字段设置值为"北京"
        System.out.println(obj);


        // 获取name并对其赋值
        // NoSuchFieldException
        Field nameField = c.getDeclaredField("name");
        // IllegalAccessException
        nameField.setAccessible(true);
        nameField.set(obj, "小明");
        System.out.println(obj);


        // 获取age并对其赋值
        Field ageField = c.getDeclaredField("age");
        ageField.setAccessible(true);
        ageField.set(obj, 27);
        System.out.println(obj);
    }
}


全部的成员变量public java.lang.String renxixiao.Person.address
私有的成员变量private java.lang.String renxixiao.Person.name
私有的成员变量int renxixiao.Person.age
私有的成员变量public java.lang.String renxixiao.Person.address
Person [name=null, age=0, address=null]
Person [name=null, age=0, address=北京]
Person [name=小明, age=0, address=北京]
Person [name=小明, age=27, address=北京]


通过反射获取获取方法并使用


/*
 * 通过发生获取方法并使用
 */
public class ReflectDemo {
    public static void main(String[] args) throws Exception {
        // 获取字节码文件对象
        Class c = Class.forName("renxixiao.Person");


        // 获取所有的方法
        Method[] methods = c.getMethods(); // 获取自己的包括父亲的公共方法
        Method[] methodss = c.getDeclaredMethods(); // 获取自己的所有的方法
        for (Method method : methods) {
        System.out.println("公共方法"+method);
        }
        for (Method method : methodss) {
            System.out.println("所有的方法"+method);
            }
        Constructor con = c.getConstructor();
        Object obj = con.newInstance();


       
        // 获取单个方法并使用
        // public void show()
        // public Method getMethod(String name,Class<?>... parameterTypes)
        // 第一个参数表示的方法名,第二个参数表示的是方法的参数的class类型
        Method m1 = c.getMethod("show");
        // public Obj

首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Pytorch 常用函数 下一篇关于 Python迭代器和生成器

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目