java 27 - 4 反射之 通过反射获取成员变量并使用
类Field:
提供有关类或接口的单个字段的信息,以及对它的动态访问权限。
A:获得类的成员变量 数组:
1、getFields(公共类的)
2、getDeclaredFields(所有类型的)
B:获得类的单个成员变量:
1、getField (公共类的)
2、getDeclaredField (所有类型的)
A.1:获得类的公共成员变量:
1 //获取类的字节码文件对象 2 Class c = Class.forName("zl_Relfect_01.Person"); 3 4 //获得该对象的公共成员变量 5 Field[] f = c.getFields(); 6 //遍历 7 for(Field fie : f){ 8 System.out.println(fie); 9 }
A.2:获得类的所有成员变量:
1 //获取类的字节码文件对象 2 Class c = Class.forName("zl_Relfect_01.Person"); 3 //获取该类的所有成员变量 4 Field[] f = c.getDeclaredFields(); 5 for(Field fie : f){ 6 System.out.println(fie); 7 }
B.1:获得单个公共成员变量:
1 //获取类的字节码文件对象 2 Class c = Class.forName("zl_Relfect_01.Person"); 3 //获取单个公共的成员变量 4 Field f = c.getField("address"); 5 System.out.println(f);
B.2:获得单个所有类型的成员变量:
1 //获取类的字节码文件对象 2 Class c = Class.forName("zl_Relfect_01.Person"); 3 // 获取单个成员变量(所有类型) 4 Field f = c.getDeclaredField("name"); 5 System.out.println(f);
通过反射获取成员变量并使用
1 //获取类的字节码文件对象 2 Class c = Class.forName("zl_Relfect_01.Person"); 3 //通过无参构造创建对象 4 Constructor con = c.getConstructor(); 5 Object obj = con.newInstance(); 6 7 8 //获取私有成员变量name,并对它进行赋值 9 //首先获取私有成员变量name 10 Field newname = c.getDeclaredField("name"); 11 //成员变量name是私有的,所以得先取消语言访问检查 public void setAccessible(boolean flag) 12 newname.setAccessible(true); 13 //set(Object obj,Object value):将指定对象变量上此 Field 对象表示的字段设置为指定的新值。 14 //给obj里面的newname赋值为张三 15 newname.set(obj, "张三"); 16 System.out.println(obj);//Person [name=张三, age=0, address=null] 17 18 19 //获取默认类型成员变量age,并对它进行赋值 20 //获取age变量,并赋值 21 Field newage = c.getDeclaredField("age"); 22 //取消语言访问检查 23 newage.setAccessible(true); 24 //给age赋值 25 newage.set(obj, 13); 26 System.out.println(obj); 27 28 29 //获取公共成员变量address,并对它赋值 30 //获取address对象,并赋值 31 Field newaddress = c.getDeclaredField("address"); 32 newaddress.set(obj, "家乡"); 33 System.out.println(obj);
转载于:https://www.cnblogs.com/LZL-student/p/5966203.html
java 27 - 4 反射之 通过反射获取成员变量并使用相关推荐
- Java反射机制——获取成员变量构造函数
2019独角兽企业重金招聘Python工程师标准>>> Java反射机制--获取成员变量&构造函数 一.成员变量是java.lang.reflect.Field的对象 1.F ...
- Java中反射获取成员变量、构造方法、成员方法及类名
都说反射是框架的灵魂,但是反射到底是啥呢,今天就聊聊反射的基础操作,也是必备操作. 反射机制是在程序运行时,对任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能调用他的任意一个属性和 ...
- 反射:通过反射获取成员变量并使用
首先建一个实体类,用于数据访问 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 ...
- 反射获取成员变量并使用【应用】
Class类获取成员变量对象的方法 方法分类 方法名 说明 Field[] getFields() 返回所有公共成员变量对象的数组 Field[] getDeclaredFields() 返回所有成员 ...
- 通过反射获取成员变量并使用
package cn.learn_03;import java.lang.reflect.Constructor; import java.lang.reflect.Field;/** 通过发生获取成 ...
- Java获取成员变量构造函数信息
目录 理论 实例 理论 成员变量也是对象! java.lang.reflect.Field类封装了关于成员变量的操作: getFields()方法获取的是所有public的成员变量的信息: getDe ...
- Java 反射 ---- 获取成员变量构造函数信息
这一章我们通过Java的反射获取某个类的成员变量构造函数信息,话不多说直接上代码. 先贴工具类获取类信息的方法: package com.blockChain;import java.lang.ref ...
- Java逆向基础之AspectJ的获取成员变量的值
注意:由于JVM优化的原因,方法里面的局部变量是不能通过AspectJ拦截并获取其中的值的,但是成员变量可以 在逆向中,我们经常要跟踪某些类的成员变量的值,这里以获取ZKM9中的qs类的成员变量g为例 ...
最新文章
- 7 Papers Radios | Transformer自动debug;AI合成舞蹈落地应用
- Linux对称NAT的UDP穿越
- Java主线程等待子线程、线程池
- Android之Notification制作多媒体控制器
- 云专网和云专线的区别_传统IDC行业与云计算的区别?
- 静态初始化中不能放入繁重计算,否则会变慢!
- stm32单片机学习笔记(模块学习一——舵机SG90)
- 2017初二上期中考试总结
- 下载软件时的X86和X64的区别
- 职业学校计算机和机电哪个好,职业学校都有什么专业10大热门专业
- [转]管理的最高境界不是完美
- 贪婪洞窟2服务器维护,贪婪洞窟2开服表
- Linux内核源码分析-scsi子系统-让磁盘转起来-sd_spinup_disk
- Grafana 系列文章(十五):Exemplars
- 常用的校验注解之 @NotNull、@NotBlank、@NotEmpty 的区别
- 风控标签体系的使用与介绍
- vue element-ui 中走马灯自适应图片高度
- 区块链界的微信BTchat链语横空出世,它是什么鬼?
- 使用360手机助手连接真机。图文教程
- java面试题想涨薪时使用