博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【通过反射获取成员变量并使用】
阅读量:5073 次
发布时间:2019-06-12

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

package com.yjf.esupplier.common.test;import java.lang.reflect.Constructor;import java.lang.reflect.Field;/** * @author shusheng * @description 通过反射获取成员变量并使用 * @Email shusheng@yiji.com * @date 2019/1/5 16:37 */public class ReflectDemo2 {    public static void main(String[] args) throws Exception {        // 获取字节码文件对象        Class c = Class.forName("com.yjf.esupplier.common.test.Person");        // 只能获取公共的成员变量        Field[] fields1 = c.getFields();        for (Field field : fields1) {            System.out.println(field);        }        System.out.println("-----------------------------------------");        // 获取所有的成员变量        Field[] fields2 = c.getDeclaredFields();        for (Field field : fields2) {            System.out.println(field);        }        // 通过无参构造方法创建对象        Constructor con = c.getConstructor();        Object obj = con.newInstance();        System.out.println(obj);        // 获取单个的成员变量        // 获取address并对其赋值        Field addressField = c.getField("address");        // 给obj对象的addressField 字段设置值为"北京"        addressField.set(obj, "北京");        System.out.println(obj);        // 获取name并对其赋值        Field nameField = c.getDeclaredField("name");        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);    }}

 

package com.yjf.esupplier.common.test;/** * @author shusheng * @description * @Email shusheng@yiji.com * @date 2018/12/29 13:42 */public class Person {        private String name;        int age;        public String address;        public Person() {        }        private Person(String name) {            this.name = name;        }        Person(String name, int age) {            this.name = name;            this.age = age;        }        public Person(String name, int age, String address) {            this.name = name;            this.age = age;            this.address = address;        }        public void show() {            System.out.println("show方法的输出");        }        public void method(String s) {            System.out.println("method方法的输出: " + s);        }        public String getString(String s, int i) {            return s + "---" + i;        }        private void function() {            System.out.println("function方法的输出");        }        @Override        public String toString() {            return "Person [name=" + name + ", age=" + age + ", address="                    + address                    + "]";        }}

 

转载于:https://www.cnblogs.com/zuixinxian/p/11275224.html

你可能感兴趣的文章
HTTP之URL的快捷方式
查看>>
满世界都是图论
查看>>
配置链路聚合中极小错误——失之毫厘谬以千里
查看>>
蓝桥杯-分小组-java
查看>>
Android Toast
查看>>
iOS开发UI篇—Quartz2D使用(绘制基本图形)
查看>>
docker固定IP地址重启不变
查看>>
桌面图标修复||桌面图标不正常
查看>>
JavaScript基础(四)关于对象及JSON
查看>>
JAVA面试常见问题之Redis篇
查看>>
jdk1.8 api 下载
查看>>
getElement的几中属性介绍
查看>>
HTML列表,表格与媒体元素
查看>>
雨林木风 GHOST_XP SP3 快速装机版YN12.08
查看>>
数据结构3——浅谈zkw线段树
查看>>
Introduction to my galaxy engine 2: Depth of field
查看>>
设计器 和后台代码的转换 快捷键
查看>>
STL容器之vector
查看>>
数据中心虚拟化技术
查看>>
复习文件操作
查看>>