类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. 如何在sharepoint2010中配置Google Anlytics 分析服务

      简介 Google Analytics(分析)不仅可以帮助您衡量销售与转化情况,而且能为您提供新鲜的深入信息,帮助您了解访问者如何使用您的网站,他们如何到达您的网站,以及您可以如何吸引他们不断回访 ...

  2. SharePoint 解决打开浏览器自动登录

    SharePoint使用Windows身份验证,默认会弹出Windows验证登录框,如下图所示: 1.对于已经加域的客户端 IE安全设置,将站点加信任站点,然后修改信任站点安全设置, 滚动条拉到最后, ...

  3. tomcat通过socket连接MySQL,不再占用服务端口【linux】

    MySQL连接方式的说明 http://icbm.iteye.com/blog/1840673 MySQL除了最常见的TCP连接方式外,还提供SOCKET(LINUX默认连接方式).PIPE和SHAR ...

  4. SqlIte数据库并发性

    把遇到的一些小问题都记下来,告诉自己,一些小细节会铸成打错的 今天没事复习以前的知识,用sqlite做数据库,发现修改数据的时候等好久才有反应,而且还失败,可是过一会之后又会好,好了以后又是一样,种以 ...

  5. Android Design Principles

    Android Design Principles Enchant Me Delight me in surprising ways 用惊奇的方式取悦用户 漂亮的界面,仔细放置的动画,一个恰到时机的音 ...

  6. 图形学理论知识 BRDF 双向反射分布函数(Bidirectional Reflectance Distribution Function)

    图形学理论知识 BRDF 双向反射分布函数 Bidirectional Reflectance Distribution Function BRDF理论 BRDF表示的是双向反射分布函数(Bidire ...

  7. Android 沉浸式状态栏 实现方式一

    1.开源项目 https://github.com/jgilfelt/SystemBarTint

  8. iOS开发笔记14:微博/微信登录与分享、微信/支付宝支付

    产品中接入了微博/微信的第三方登录分享功能.微信和支付宝的第三方支付功能,之前在开发过程中涉及到这些部分,于是抽空将接入过程梳理了一遍. 1.微博.微信.支付宝SDK相关接入设置 (1)微博SDK S ...

  9. 详解MySQL的用户密码过期功能

    这篇文章主要为大家详细介绍了MySQL的用户密码过期功能的相关资料,需要的朋友可以参考下   Payment Card Industry,即支付卡行业,PCI行业表示借记卡.信用卡.预付卡.电子钱包. ...

  10. Winform读写App.config文件以及重启程序

    //重启主程序 //System.Diagnostics.Process.Start(System.Reflection.Assembly.GetExecutingAssembly().Locatio ...