类Field: 提供有关类或接口的单个字段的信息,以及对它的动态访问权限。

A:获得类的成员变量 数组:

  1、getFields(公共类的)

  2、getDeclaredFields(所有类型的)

B:获得类的单个成员变量:

  1、getField (公共类的)

  2、getDeclaredField (所有类型的)

  A.1:获得类的公共成员变量:

         //获取类的字节码文件对象
Class c = Class.forName("zl_Relfect_01.Person"); //获得该对象的公共成员变量
Field[] f = c.getFields();
//遍历
for(Field fie : f){
System.out.println(fie);
}

 

 A.2:获得类的所有成员变量:

         //获取类的字节码文件对象
Class c = Class.forName("zl_Relfect_01.Person");
   //获取该类的所有成员变量
Field[] f = c.getDeclaredFields();
for(Field fie : f){
System.out.println(fie);
}

 B.1:获得单个公共成员变量:

         //获取类的字节码文件对象
Class c = Class.forName("zl_Relfect_01.Person");
//获取单个公共的成员变量
Field f = c.getField("address");
System.out.println(f);

 B.2:获得单个所有类型的成员变量:

         //获取类的字节码文件对象
Class c = Class.forName("zl_Relfect_01.Person");
// 获取单个成员变量(所有类型)
Field f = c.getDeclaredField("name");
System.out.println(f);

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

      //获取类的字节码文件对象
Class c = Class.forName("zl_Relfect_01.Person");
//通过无参构造创建对象
Constructor con = c.getConstructor();
Object obj = con.newInstance(); //获取私有成员变量name,并对它进行赋值
//首先获取私有成员变量name
Field newname = c.getDeclaredField("name");
//成员变量name是私有的,所以得先取消语言访问检查 public void setAccessible(boolean flag)
newname.setAccessible(true);
//set(Object obj,Object value):将指定对象变量上此 Field 对象表示的字段设置为指定的新值。
//给obj里面的newname赋值为张三
newname.set(obj, "张三");
System.out.println(obj);//Person [name=张三, age=0, address=null] //获取默认类型成员变量age,并对它进行赋值
//获取age变量,并赋值
Field newage = c.getDeclaredField("age");
//取消语言访问检查
newage.setAccessible(true);
//给age赋值
newage.set(obj, 13);
System.out.println(obj); //获取公共成员变量address,并对它赋值
//获取address对象,并赋值
Field newaddress = c.getDeclaredField("address");
newaddress.set(obj, "家乡");
System.out.println(obj);

java 27 - 4 反射之 通过反射获取成员变量并使用的更多相关文章

  1. Android(java)学习笔记109:通过反射获取成员变量和成员方法并且使用

    一.反射获取成员变量并且使用: 1.获取字节码文件对象:         Class c = Class.forName("cn.itcast_01.Person"); 2.使用无 ...

  2. Android(java)学习笔记50:通过反射获取成员变量和成员方法并且使用

    1. 反射获取成员变量并且使用: (1)获取字节码文件对象:         Class c = Class.forName("cn.itcast_01.Person"); (2) ...

  3. Java反射理解(四)-- 获取成员变量构造函数信息

    Java反射理解(四)-- 获取成员变量构造函数信息 步骤 获取成员变量信息: obj.getClass() 获取类类型对象 成员变量也是对象,java.lang.reflect.Field 类中封装 ...

  4. java反射--获取成员变量信息

    获取成员变量信息 代码及说明: public static void printFieldMessage(Object obj) { //要获取类的信息,首先要获取类的类类型 Class c=obj. ...

  5. Java bean 链式获取成员变量无需判空的工具设计

    Java bean 链式获取成员变量无需判空的工具设计 本篇文章已发布至公众号 Hollis 对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常(NPE)的骚扰.连Java的发明者 ...

  6. java 反射 - 获取成员变量的值.

    通过反射,可以获取所有声明的成员变量(包括所有的),代码如下: package spt.test.src; public class Person { private String name = &q ...

  7. java调用python的惨痛史(无法获取环境变量)

    环境:java,was,python2.6,红帽linux,oracle,python用cx_Oracle        事情是这样的,有个需求,需要对数据库进行处理,简单说就是把数据取出来,用pyt ...

  8. [Java] 继承中,父类被覆盖的成员变量、方法的可访问性

    在 Java 的继承机制里,在子类内部,可以访问父类被覆盖的变量和方法:在子类外部,可以访问父类的被覆盖变量,但是不能访问父类的被覆盖方法. 父类中被覆盖的方法不能在外部被方法,这是出于封装的考虑. ...

  9. Java使用反射来获取成员变量泛型信息

    Java通过指定类对应的Class对象,程序可以获得该类里包括的所有Field,不管该Field使用private修饰,还是使用public修饰.获得了Field对象后,就可以很容易的获得该Field ...

随机推荐

  1. C# 获得MP4时长

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  2. Projects\Portal_Content\Indexer\CiFiles文件夹下文件占用磁盘空间过大问题。

    C:\Program Files\Microsoft Office Servers\12.0\Data\Office Server\Applications\9765757d-15ee-432c-94 ...

  3. 设置 Xcode 自动生成代码片段

    一.什么是代码片段 当在Xcode中输入dowhile并回车后,Xcode会出现下图所示的提示代码: 这就是代码片段,目的是使程序员以最快的速度输入常用的代码片段,提高编程效率.该功能是从Xcode4 ...

  4. android Activity runOnUiThread() 方法使用

    在android 中我们一般用 Handler 做主线程 和 子线程 之间的通信 . 现在有了一种更为简洁的写法,就是 Activity 里面的 runOnUiThread( Runnable )方法 ...

  5. APP远程调试及网络自动化测试

    一:优测 腾讯旗下的测试服务 http://utest.qq.com/ 二:云测 http://www.testin.cn/ 三:testbird 1.进入这个网站,注册并且登录 https://dt ...

  6. [读书笔记] CSS权威指南2: 结构和层叠

    层叠样式表中最基本的一个方面可能就是层叠——冲突的声明要通过这个层叠过程排序,并由此确定最终的文档表示.这个过程的核心是选择器及其相关声明的特殊性,以及继承机制. 特殊性 对于每个规则,用户代理会计算 ...

  7. art.dialog.art 中,将子页面窗口中的值传递给父框架中

    artDialog.open.origin.document.getElementById('父元素ID').value=document.getElementById('子页面元素ID').valu ...

  8. xdebug + wincachegrind

    ;;;;;;;php.ini;;;;;;;;;;;;;;;;;; [Xdebug]zend_extension=D:\Xampp\php\ext\php_xdebug.dll;开启自动跟踪xdebug ...

  9. Java开发第一步:JDK 7 安装及配置

    JDK 7 安装及配置1. 打开网页http://www.oracle.com 下载对应平台的合适 JDK. 2. 双击下载的 exe,如 jdk-7u7-windows-i586.exe.3. 进入 ...

  10. 哭瞎!360云盘将关停,你的几十T照片和文件该怎么办

    IDO老徐刚得到了一个非常不开心的消息,360云盘将停止个人云盘服务...进行业务转型,在网盘存储.传播内容的合法性和安全性得到彻底解决之前不再考虑恢复,之后转型企业云服务. 而且之前共享的所有资料, ...