java 使用反射操作字段
Field提供两组方法操作字段:
xxx getXxx(Object obj):获取obj对象该Field的字段值,此处的xxx表示8个基本数据类型。若该字段的类型是引用数据类型则使用,Object get(Object obj);
void setXxx(Object obj,xxx val):将obj对象的该Field字段设置成val值,此处的xxx表示8个基本数据类型。若该字段的类型是引用数据类型则使用,void set(Object obj, Object value);
package junereflect624;
//获取字符,并且赋值,然后再取出来(对应的去查看api,比如这个是Field,别的比如Constructor,Method)
步骤:
1.获取类
2.获取字段
3.赋值(set(c.newInstance(),””));{如果为私有的话设置可接受}
import java.lang.reflect.Field;
class Cat{
private String name;
public int age;
private String color;
}
public class FieldDemo12 {
public static void main(String[] args) throws Exception {
Class<Cat> clz = Cat.class;
Field[] f = clz.getDeclaredFields();
for (Field field : f) {
System.out.println(field);
}
Field fi = clz.getDeclaredField("name");
System.out.println(fi);
System.out.println(fi.getName());//name
//核心开始
/**
* void set(Object obj, Object value)
将指定对象变量上此 Field 对象表示的字段设置为指定的新值。
*/
Cat c = clz.newInstance();
fi.setAccessible(true);
fi.set(c, "刘昭");//赋值成功
Object o = fi.get(c);
System.out.println(o);//取出成功
fi = clz.getDeclaredField("age");
fi.setAccessible(true);
fi.set(c, 21);
int i = fi.getInt(c);//左边的接受类型已经写成了int,右边的返回类型就也必须是int
System.out.println(i);//获取成功
}
}
打印
private java.lang.String junereflect624.Cat.name
public int junereflect624.Cat.age
private java.lang.String junereflect624.Cat.color
private java.lang.String junereflect624.Cat.name
name
刘昭
21
相关文章
- 深入java面向对象四:Java 内部类种类及使用解析(转)
- Java 开发环境配置--eclipse工具进行java开发
- JAVA 注解教程(四)Java 预置的注解
- Java实现 蓝桥杯VIP 算法训练 步与血(递推 || DFS)
- Java实现派(Pie, NWERC 2006, LA 3635)
- Java实现 LeetCode 373 查找和最小的K对数字
- Java实现 LeetCode 38 外观数列
- java实现Playfair 密码
- java实现第五届蓝桥杯武功秘籍
- Java实现 蓝桥杯VIP 算法训练 一元三次方程
- Java实现 蓝桥杯VIP 算法训练 打印下述图形
- Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
- JAVA中RSS解析器(rome.jar和jdom.jar)范例
- java反射--通过反射了解集合泛型的本质
- Java反射机制
- linux系统部署Java程序获取ip时报Caused by: java.net.UnknownHostException: XXXXXXXXXX: XXXXXXXXXX: Name or service not known
- Java反射
- 【Java】java使用反射访问对象方法和成员变量
- Java基础--通过反射获取私有的成员方法示例代码
- Java java.util.concurrent.Future的一个例子
- Atitit java集成内嵌浏览器与外嵌浏览器attilax总结
- 【项目实战】Java中的反射机制入门介绍
- 深入剖析Java的四大神器:单元测试、反射、注解、动态代理
- 【java】Java连接mysql数据库及mysql驱动jar包下载和使用
- Java反射在整个程序运行中的位置
- Java程序猿从笨鸟到菜鸟之(九十二)深入java虚拟机(一)——java虚拟机底层结构具体解释
- 职场竞争力提升必备 | 快速掌握Java开发主流框架
- java Class.getSimpleName() 的用法
- 【JAVA面试必会】JMM高并发详解(java内存模型、JMM三大特征、volatile关键字 )
- 【java】Java并发编程--Java实现多线程的4种方式
- JAVA开发讲义(二)-Java程序设计之数据之谜四