类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 反射之 通过反射获取成员变量并使用相关推荐

  1. Java反射机制——获取成员变量构造函数

    2019独角兽企业重金招聘Python工程师标准>>> Java反射机制--获取成员变量&构造函数 一.成员变量是java.lang.reflect.Field的对象 1.F ...

  2. Java中反射获取成员变量、构造方法、成员方法及类名

    都说反射是框架的灵魂,但是反射到底是啥呢,今天就聊聊反射的基础操作,也是必备操作. 反射机制是在程序运行时,对任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能调用他的任意一个属性和 ...

  3. 反射:通过反射获取成员变量并使用

    首先建一个实体类,用于数据访问 package star.july.entity;public class Student {private String name;int age;public St ...

  4. 反射获取成员变量并改值

    package cn.learn.demo1;import java.lang.reflect.Field;/** 反射获取成员变量,并修改值* Person类中的成员String name*/ pu ...

  5. 反射获取成员变量并使用【应用】

    Class类获取成员变量对象的方法 方法分类 方法名 说明 Field[] getFields() 返回所有公共成员变量对象的数组 Field[] getDeclaredFields() 返回所有成员 ...

  6. 通过反射获取成员变量并使用

    package cn.learn_03;import java.lang.reflect.Constructor; import java.lang.reflect.Field;/** 通过发生获取成 ...

  7. Java获取成员变量构造函数信息

    目录 理论 实例 理论 成员变量也是对象! java.lang.reflect.Field类封装了关于成员变量的操作: getFields()方法获取的是所有public的成员变量的信息: getDe ...

  8. Java 反射 ---- 获取成员变量构造函数信息

    这一章我们通过Java的反射获取某个类的成员变量构造函数信息,话不多说直接上代码. 先贴工具类获取类信息的方法: package com.blockChain;import java.lang.ref ...

  9. Java逆向基础之AspectJ的获取成员变量的值

    注意:由于JVM优化的原因,方法里面的局部变量是不能通过AspectJ拦截并获取其中的值的,但是成员变量可以 在逆向中,我们经常要跟踪某些类的成员变量的值,这里以获取ZKM9中的qs类的成员变量g为例 ...

最新文章

  1. 7 Papers Radios | Transformer自动debug;AI合成舞蹈落地应用
  2. Linux对称NAT的UDP穿越
  3. Java主线程等待子线程、线程池
  4. Android之Notification制作多媒体控制器
  5. 云专网和云专线的区别_传统IDC行业与云计算的区别?
  6. 静态初始化中不能放入繁重计算,否则会变慢!
  7. stm32单片机学习笔记(模块学习一——舵机SG90)
  8. 2017初二上期中考试总结
  9. 下载软件时的X86和X64的区别
  10. 职业学校计算机和机电哪个好,职业学校都有什么专业10大热门专业
  11. [转]管理的最高境界不是完美
  12. 贪婪洞窟2服务器维护,贪婪洞窟2开服表
  13. Linux内核源码分析-scsi子系统-让磁盘转起来-sd_spinup_disk
  14. Grafana 系列文章(十五):Exemplars
  15. 常用的校验注解之 @NotNull、@NotBlank、@NotEmpty 的区别
  16. 风控标签体系的使用与介绍
  17. vue element-ui 中走马灯自适应图片高度
  18. 区块链界的微信BTchat链语横空出世,它是什么鬼?
  19. 使用360手机助手连接真机。图文教程
  20. java面试题想涨薪时使用

热门文章

  1. [轉]c#简单调用DELPHI DLL封装窗体
  2. 灰盒测试—数据库软件
  3. 三阶魔方自动还原 vc实现
  4. nginx服务器安装及配置文件详解
  5. libslog---高性能开源C/C++多线程安全日志库
  6. 暗通道优先的图像去雾算法(下)
  7. ubuntu pdf转jpg或txt
  8. UOJ228:基础数据结构练习题——题解
  9. C++中引用()的用法和应用实例
  10. android 上传文件到服务器