java 27 - 4 反射之 通过反射获取成员变量并使用
类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 反射之 通过反射获取成员变量并使用的更多相关文章
- Android(java)学习笔记109:通过反射获取成员变量和成员方法并且使用
一.反射获取成员变量并且使用: 1.获取字节码文件对象: Class c = Class.forName("cn.itcast_01.Person"); 2.使用无 ...
- Android(java)学习笔记50:通过反射获取成员变量和成员方法并且使用
1. 反射获取成员变量并且使用: (1)获取字节码文件对象: Class c = Class.forName("cn.itcast_01.Person"); (2) ...
- Java反射理解(四)-- 获取成员变量构造函数信息
Java反射理解(四)-- 获取成员变量构造函数信息 步骤 获取成员变量信息: obj.getClass() 获取类类型对象 成员变量也是对象,java.lang.reflect.Field 类中封装 ...
- java反射--获取成员变量信息
获取成员变量信息 代码及说明: public static void printFieldMessage(Object obj) { //要获取类的信息,首先要获取类的类类型 Class c=obj. ...
- Java bean 链式获取成员变量无需判空的工具设计
Java bean 链式获取成员变量无需判空的工具设计 本篇文章已发布至公众号 Hollis 对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常(NPE)的骚扰.连Java的发明者 ...
- java 反射 - 获取成员变量的值.
通过反射,可以获取所有声明的成员变量(包括所有的),代码如下: package spt.test.src; public class Person { private String name = &q ...
- java调用python的惨痛史(无法获取环境变量)
环境:java,was,python2.6,红帽linux,oracle,python用cx_Oracle 事情是这样的,有个需求,需要对数据库进行处理,简单说就是把数据取出来,用pyt ...
- [Java] 继承中,父类被覆盖的成员变量、方法的可访问性
在 Java 的继承机制里,在子类内部,可以访问父类被覆盖的变量和方法:在子类外部,可以访问父类的被覆盖变量,但是不能访问父类的被覆盖方法. 父类中被覆盖的方法不能在外部被方法,这是出于封装的考虑. ...
- Java使用反射来获取成员变量泛型信息
Java通过指定类对应的Class对象,程序可以获得该类里包括的所有Field,不管该Field使用private修饰,还是使用public修饰.获得了Field对象后,就可以很容易的获得该Field ...
随机推荐
- C# 获得MP4时长
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- Projects\Portal_Content\Indexer\CiFiles文件夹下文件占用磁盘空间过大问题。
C:\Program Files\Microsoft Office Servers\12.0\Data\Office Server\Applications\9765757d-15ee-432c-94 ...
- 设置 Xcode 自动生成代码片段
一.什么是代码片段 当在Xcode中输入dowhile并回车后,Xcode会出现下图所示的提示代码: 这就是代码片段,目的是使程序员以最快的速度输入常用的代码片段,提高编程效率.该功能是从Xcode4 ...
- android Activity runOnUiThread() 方法使用
在android 中我们一般用 Handler 做主线程 和 子线程 之间的通信 . 现在有了一种更为简洁的写法,就是 Activity 里面的 runOnUiThread( Runnable )方法 ...
- APP远程调试及网络自动化测试
一:优测 腾讯旗下的测试服务 http://utest.qq.com/ 二:云测 http://www.testin.cn/ 三:testbird 1.进入这个网站,注册并且登录 https://dt ...
- [读书笔记] CSS权威指南2: 结构和层叠
层叠样式表中最基本的一个方面可能就是层叠——冲突的声明要通过这个层叠过程排序,并由此确定最终的文档表示.这个过程的核心是选择器及其相关声明的特殊性,以及继承机制. 特殊性 对于每个规则,用户代理会计算 ...
- art.dialog.art 中,将子页面窗口中的值传递给父框架中
artDialog.open.origin.document.getElementById('父元素ID').value=document.getElementById('子页面元素ID').valu ...
- xdebug + wincachegrind
;;;;;;;php.ini;;;;;;;;;;;;;;;;;; [Xdebug]zend_extension=D:\Xampp\php\ext\php_xdebug.dll;开启自动跟踪xdebug ...
- Java开发第一步:JDK 7 安装及配置
JDK 7 安装及配置1. 打开网页http://www.oracle.com 下载对应平台的合适 JDK. 2. 双击下载的 exe,如 jdk-7u7-windows-i586.exe.3. 进入 ...
- 哭瞎!360云盘将关停,你的几十T照片和文件该怎么办
IDO老徐刚得到了一个非常不开心的消息,360云盘将停止个人云盘服务...进行业务转型,在网盘存储.传播内容的合法性和安全性得到彻底解决之前不再考虑恢复,之后转型企业云服务. 而且之前共享的所有资料, ...