反射获取成员变量并使用【应用】
Class类获取成员变量对象的方法
方法分类
方法名 说明 Field[] getFields() 返回所有公共成员变量对象的数组 Field[] getDeclaredFields() 返回所有成员变量对象的数组 Field getField(String name) 返回单个公共成员变量对象 Field getDeclaredField(String name) 返回单个成员变量对象 示例代码
public class ReflectDemo01 {public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {//获取Class对象Class<?> c = Class.forName("com.leon_02.Student");//Field[] getFields() 返回一个包含 Field对象的数组, Field对象反映由该 Class对象表示的类或接口的所有可访问的公共字段//Field[] getDeclaredFields() 返回一个 Field对象的数组,反映了由该 Class对象表示的类或接口声明的所有字段
// Field[] fields = c.getFields();Field[] fields = c.getDeclaredFields();for(Field field : fields) {System.out.println(field);}System.out.println("--------");//Field getField(String name) 返回一个 Field对象,该对象反映由该 Class对象表示的类或接口的指定公共成员字段//Field getDeclaredField(String name) 返回一个 Field对象,该对象反映由该 Class对象表示的类或接口的指定声明字段Field addressField = c.getField("address");//获取无参构造方法创建对象Constructor<?> con = c.getConstructor();Object obj = con.newInstance();// obj.addressField = "西安";//Field提供有关类或接口的单个字段的信息和动态访问//void set(Object obj, Object value) 将指定的对象参数中由此 Field对象表示的字段设置为指定的新值addressField.set(obj,"西安"); //给obj的成员变量addressField赋值为西安System.out.println(obj);// Student s = new Student();
// s.address = "西安";
// System.out.println(s);}
}
Field类用于给成员变量赋值的方法
方法名 | 说明 |
---|---|
voidset(Object obj,Object value) | 给obj对象的成员变量赋值为value |
反射获取成员变量并使用练习【应用】
案例需求
通过反射获取成员变量并赋值
代码实现
学生类:参见上方学生类
测试类
public class ReflectDemo02 {public static void main(String[] args) throws Exception {//获取Class对象Class<?> c = Class.forName("com.leon_02.Student");//Student s = new Student();Constructor<?> con = c.getConstructor();Object obj = con.newInstance();System.out.println(obj);//s.name = "林青霞";
// Field nameField = c.getField("name"); //NoSuchFieldException: nameField nameField = c.getDeclaredField("name");nameField.setAccessible(true);nameField.set(obj, "林青霞");System.out.println(obj);//s.age = 30;Field ageField = c.getDeclaredField("age");ageField.setAccessible(true);ageField.set(obj,30);System.out.println(obj);//s.address = "西安";Field addressField = c.getDeclaredField("address");addressField.setAccessible(true);addressField.set(obj,"西安");System.out.println(obj);}
}
反射获取成员变量并使用【应用】相关推荐
- java 27 - 4 反射之 通过反射获取成员变量并使用
类Field: 提供有关类或接口的单个字段的信息,以及对它的动态访问权限. A:获得类的成员变量 数组: 1.getFields(公共类的) 2.getDeclaredFields(所有类型的) B: ...
- 反射:通过反射获取成员变量并使用
首先建一个实体类,用于数据访问 package star.july.entity;public class Student {private String name;int age;public St ...
- 反射获取成员变量并改值
package cn.learn.demo1;import java.lang.reflect.Field;/** 反射获取成员变量,并修改值* Person类中的成员String name*/ pu ...
- Java中反射获取成员变量、构造方法、成员方法及类名
都说反射是框架的灵魂,但是反射到底是啥呢,今天就聊聊反射的基础操作,也是必备操作. 反射机制是在程序运行时,对任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能调用他的任意一个属性和 ...
- 通过反射获取成员变量并使用
package cn.learn_03;import java.lang.reflect.Constructor; import java.lang.reflect.Field;/** 通过发生获取成 ...
- Java 反射 ---- 获取成员变量构造函数信息
这一章我们通过Java的反射获取某个类的成员变量构造函数信息,话不多说直接上代码. 先贴工具类获取类信息的方法: package com.blockChain;import java.lang.ref ...
- [Java基础]反射获取成员变量并使用
代码如下: package ClassObjectPack;public class Student {private String name;int age;public String addres ...
- [Java基础]反射获取成员变量并使用练习
代码如下: package ClassObjectPack;public class Student {private String name;int age;public String addres ...
- Java反射机制——获取成员变量构造函数
2019独角兽企业重金招聘Python工程师标准>>> Java反射机制--获取成员变量&构造函数 一.成员变量是java.lang.reflect.Field的对象 1.F ...
最新文章
- 【git学习一】git的原理
- c语言随机产生arp报文,c语言构造arp报文
- 先验概率vs后验概率
- false sharing
- 单选按钮android服务器,android – 如何在radiogroup中将单选按钮设置...
- ubuntu 14.04 环境下打开xls、pdf与png文件
- Linux中Tomcat 服务的搭建
- 网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP
- css table中设置tr行间距
- MFC:Ribbon界面设计
- 前端微信小程序面试题总结
- 基于ObjectArx的AutoCAD二次开发的基础入门
- cmd的常用命令分类详解
- 学计算机干眼,电脑族预防干眼的7个小妙招_39健康网
- YB4556系列 28V 高输入耐压4056 可支持4.2V 4.3V 电池 并且具有多种封装方式 可应用于电子烟 充电器 等各类产品
- [2009-07-28]也许是离别之时
- sencha list
- 气液增压缸用于风扇叶铆钉铆接(产品试压)
- Django教程 —— Django入门
- 任务的创建与执行-4