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);}
}

反射获取成员变量并使用【应用】相关推荐

  1. java 27 - 4 反射之 通过反射获取成员变量并使用

    类Field: 提供有关类或接口的单个字段的信息,以及对它的动态访问权限. A:获得类的成员变量 数组: 1.getFields(公共类的) 2.getDeclaredFields(所有类型的) B: ...

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

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

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

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

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

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

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

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

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

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

  7. [Java基础]反射获取成员变量并使用

    代码如下: package ClassObjectPack;public class Student {private String name;int age;public String addres ...

  8. [Java基础]反射获取成员变量并使用练习

    代码如下: package ClassObjectPack;public class Student {private String name;int age;public String addres ...

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

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

最新文章

  1. 【git学习一】git的原理
  2. c语言随机产生arp报文,c语言构造arp报文
  3. 先验概率vs后验概率
  4. false sharing
  5. 单选按钮android服务器,android – 如何在radiogroup中将单选按钮设置...
  6. ubuntu 14.04 环境下打开xls、pdf与png文件
  7. Linux中Tomcat 服务的搭建
  8. 网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP
  9. css table中设置tr行间距
  10. MFC:Ribbon界面设计
  11. 前端微信小程序面试题总结
  12. 基于ObjectArx的AutoCAD二次开发的基础入门
  13. cmd的常用命令分类详解
  14. 学计算机干眼,电脑族预防干眼的7个小妙招_39健康网
  15. YB4556系列 28V 高输入耐压4056 可支持4.2V 4.3V 电池 并且具有多种封装方式 可应用于电子烟 充电器 等各类产品
  16. [2009-07-28]也许是离别之时
  17. sencha list
  18. 气液增压缸用于风扇叶铆钉铆接(产品试压)
  19. Django教程 —— Django入门
  20. 任务的创建与执行-4

热门文章

  1. 图像的存储格式转化(python实现)
  2. 如何打开Tango的ADF文件?
  3. C#微信公众号开发 -- (七)自定义菜单事件之VIEW及网页(OAuth2.0)授权
  4. OC 实例变量(instance var)与属性(@property)的关系 isa指针
  5. Core Data系列二——基础概念
  6. 《LED调光-DMX512灯光协义接收控制》转
  7. 2014-2015-1学期使用的教材
  8. Android 点击图片进行浏览
  9. Vue.js学习笔记四
  10. marin 初学LINUX之路