Java反射 field

  1. 获取字节码文件对象

    Class c = Class.forName(“fieldtest.Student”);

  2. 通过无参构造方法创建对象obj

    Constructor con = c.getConstructor();

    Object obj = con.newInstance();

  3. 通过成员变量名,获取单个的成员变量

    Field nameField = c.getField("name");//getField(String name)//Returns a Field object that reflects the specified public member field of the class or interface represented by this Class object. //The name parameter is a String specifying the simple name of the desired field
    
  4. 将指定对象变量上此 Field 对象表示的字段设置为指定的新值

    nameField.set(obj, "y"); // 给obj对象的addressField字段设置值为"y"// public void set(Object obj,Object value)设置与Field对象对应的obj对象中的域的值为value
    
  5. 如果想要获取指定私有成员变量

    Field ageField = c.getDeclaredField(“age”);

  6. 取消对私有变量age的访问检查

    ageField.setAccessible(true);

  7. 将指定对象变量上此 Field 对象表示的字段设置为指定的新值

    ageField.set(obj, 18);

package fieldtest;public class Student {// 成员变量public String name;// 公共private int age;// 私有// 构造方法public Student() {super();// TODO Auto-generated constructor stub}// 私有构造方法private Student(String name) {this.name = name;}public Student(String name, int age) {super();this.name = name;this.age = age;}// 成员方法(getXxx/setXxx)public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}// 成员方法public void study() {System.out.println("我爱学习java!");}// 私有private void study(String string) {System.out.println("我还爱学习" + string);}@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + "]";}
}
package fieldtest;import java.lang.reflect.Constructor;
import java.lang.reflect.Field;/** 通过发生获取成员变量并使用*/
public class FieldDemo {public static void main(String[] args) throws Exception {// 获取字节码文件对象Class c = Class.forName("fieldtest.Student");// 获取所有的成员变量System.out.println("获取公共成员变量");Field[] fields = c.getFields();for (Field field : fields) {System.out.println(field);}       System.out.println("获取所有成员变量");Field[] fields1 = c.getDeclaredFields();//所有for (Field field : fields1) {System.out.println(field);}/** Person p = new Person(); p.address = "北京"; System.out.println(p);*/// 通过无参构造方法创建对象Constructor con = c.getConstructor();Object obj = con.newInstance();System.out.println(obj);// 通过成员变量名,获取单个的成员变量Field nameField = c.getField("name");//getField(String name) //返回一个 Field对象,它反映此表示的类或接口的指定公共成员字段 类对象。 // public void set(Object obj,Object value)// 将指定对象变量上此 Field 对象表示的字段设置为指定的新值。nameField.set(obj, "y"); // 给obj对象的addressField字段设置值为"y"System.out.println(obj);// 获取age并对其赋值// NoSuchFieldException 私有变量Field ageField = c.getDeclaredField("age");// IllegalAccessException 暴力访问ageField.setAccessible(true);ageField.set(obj, 18);System.out.println(obj);}
}
/*
获取公共成员变量
public java.lang.String fieldtest.Student.name
获取所有成员变量
public java.lang.String fieldtest.Student.name
private int fieldtest.Student.age
Student [name=null, age=0]
Student [name=y, age=0]
Student [name=y, age=18]
*/

Java反射 field相关推荐

  1. java反射field和method的顺序问题

    最近在有思考到序列化性能优化的问题,关于java反射field和method的顺序问题,这里有详细的讨论http://stackoverflow.com/questions/5001172/java- ...

  2. java 反射 field get方法_JAVA学习之反射getDeclaredField()方法与getField()方法的区别

    在使用反射的时候,常用到的几个方法老是傻傻的分不清楚是干吗的,功能差不多的啊, 比如: Class.getFields(), Class.getField(String), Class.getDecl ...

  3. java field类,Java反射—Field类使用

    Field作为反射中对应类或对象中的域或者叫做属性的操作类,除了我前一篇文章中的得到名字和类型等,Field的作用不限于此. Java SE 8的Docs这样说:A Field provides in ...

  4. java 反射 field.set_java从入门到精髓 - 反射Field

    importjava.lang.reflect.Field;publicclassFieldTest {inti;publicfloatf;protectedbooleanb;privateStrin ...

  5. java反射field_java反射field用法

    我们在前面的文章中学习了java反射机制是什么的问题,相信大家对反射机制有了全面的理解.在java中使用反射机制,会提高程序的灵活性和扩展性,还能节省资源,因此在java编程中使用好反射是重要的.今天 ...

  6. 【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】...

    方法1:通过get()方法获取属性值 package com.sxd.test.controller;public class FirstCa{private Integer num;private ...

  7. java 反射 Constructor、Method、Field 基本用法

    java反射主要从以下几个方面理解 理解 Class 类 理解 Java 的类加载机制 学会使用 ClassLoader 进行类加载 理解反射的机制 掌握 Constructor.Method.Fie ...

  8. Java 反射 (Class、ClassLoader、Constructor、Method、Field)

    反射是Java中一个非常重要.非常强大的机制.曾看到一句话"反射是框架的灵魂",初学时不懂,等到学完框架之后才慢慢理解其意. 什么是反射?我们先通过几个类和示例来初步体会一下反射. ...

  9. Java 反射机制[Field反射]

    Java 反射机制[Field反射] 1.  反射概念及功能 反射就是把Java类中的各种成分映射成对应的Java类.比如一个Java类中用一个Class类的对象来表示. 一个类中的组成部分分为成员变 ...

最新文章

  1. [转] asp.net core Introducing View Components
  2. CentOs6.5下独立安装Nginx篇
  3. dubbo接口访问控制
  4. 在xcode4中使用cocos2d 2.x很顺利的
  5. python拷贝是什么知识点_python闭包、深浅拷贝、垃圾回收、with语句知识点汇总...
  6. struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Action的实现类
  7. Python的闭包的后期绑定问题
  8. 基于Spring Security的认证方式_实现认证功能_Spring Security OAuth2.0认证授权---springcloud工作笔记120
  9. 阿里云助贫困大学生用技能点亮人生
  10. 金蝶KIS/K3各版本下载地址
  11. redis文档api以及SpringBoot集成操作
  12. java 继承 序列化_Java中带继承的对象序列化 - Break易站
  13. python中compile函数_Python compile函数有什么用?
  14. 复制淘宝天猫宝贝上传到店铺,如何将图片全部替换为自己的图片?
  15. supervised contrastive learning 解读
  16. 积极心态的力量——杨吉
  17. 押宝线下渠道 能否拯救陷入芯片困境的魅族?
  18. bios密码解锁软件_你知道自己的电脑还有这么一个BIOS程序吗
  19. 大数据薪水大概多少_大数据薪水大概多少
  20. 中学数学教学参考杂志社中学数学教学参考编辑部2022年第27期目录

热门文章

  1. Docker镜像和容器常用命令
  2. 华为数据通信产品VRP操作系统的使用
  3. dockerfile如何运行镜像内的脚本_第七章 Dockerfile文件解析(一)
  4. 华中科技大学c语言期末考试题,华中科技大学C语言期末考库剖析.docx
  5. iview table增加一行减少一行_PQ入门函数:Table.ReplaceValue
  6. ubuntu nginx添加站点配置失效处理
  7. 网页java在div输出内容_JS实现读取xml内容并输出到div中的方法示例
  8. Java利用stream(流)对map中的values进行过滤、排序操作
  9. MySQL 查询速度慢与性能差的原因与解决方法
  10. 用自定义注解做点什么——自定义注解有什么用