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 ...
随机推荐
- ae 打开地图文档
if (openMxdDialog.ShowDialog() == DialogResult.OK) { pathMXD = openMxdDialog.FileName; if (pathMXD ! ...
- CRM 2013 自动发送报表
Sql Server Report非常强大,导出不同格式的文档,比如work 或者excel都可以委托Reporting先做报表开发然后再在程序中调用生成指定格式的报表推送给用户,CRM也是集成了Re ...
- 关于sharepoint2013的SPUtility.GetGenericSetupPath()方法过期解决办法
有个时候需要读取layouts下的xml文件,因此需要知道路径,以前在SP2010用的SPUtility.GetGenericSetupPath()方法获取.现在SP2013提示过期否决 看2个结构分 ...
- SharePoint 2010 匿名访问开启后不能访问Allitems.aspx或DisplayForm.aspx
Body: Full Credit goes to Pet Stilgoe: http://www.petestilgoe.com/2010/02/allowed-anonymous-access-o ...
- 【代码笔记】iOS-禁止输入表情符号
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
- 手把手教你使用Git
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...
- android Gui系统之WMS(1)----window flags & view flags
SurfaceFlinger 前面说的,就是一个surface的合成.SurfaceFlinger就是一个默默的记录着,它不会对surface的内容有什么改动. WMS(WindowsManagerS ...
- 原 ng-include用法分析以及多标签页面的简单实现方式
Demo:http://webenh.chinacloudsites.cn/Default/Demo2 在平时的项目开发中,应该会经常遇到上图所示的需求,就是在一个页面中有多个标签,被选中的标签颜色会 ...
- Asp.net Mvc 多级控制器 路由重写 及 多级Views目录 的寻找视图的规则 (多级路由) 如:Admin/Test/Index
http://blog.csdn.net/buhuan123/article/details/26387427 目录(?)[-] 1那么我们再来看我们需要的访问方式如下图 razor视图的地址写成通配 ...
- 全站HTTPs,没那么简单
“全站 HTTPs”俨然成了目前的热门话题,很多网站都在摩拳擦掌要实行全站 HTTPs.凑巧,我们(沪江)也在推行这个计划. 一开始大家想得都很简单,把证书购买了.配好了,相应的路径改一改,就没有问题 ...