博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java反射机制demo(六)—获得并操作一个类的属性
阅读量:5292 次
发布时间:2019-06-14

本文共 1460 字,大约阅读时间需要 4 分钟。

Java反射机制demo(六)—获得并操作一个类的属性

 

获得并操作一个类的属性?!

不可思议啊,一个类的属性一般都是私有成员变量啊,private修饰符啊!

但是毫无疑问,这些东西在Java的反射机制面前都成了渣渣,Java反射机制读的是字节码,是Class类,有什么获得不了,操作不了的呢。

待实验用的小白鼠Heros类:

package com.aaron.reflect;public class Heros {	private String name;//名字	private String type;//类型	private int camp;//0,近卫;1,天灾		public Heros(){}	@Override	public String toString() {		return "Heros [\n name=" + name + ", \n type=" + type + ", \n camp=" + camp + "\n]";	}	}

  测试类:

package com.aaron.reflect;import java.lang.reflect.Field;public class Demo6 {	public static void main(String[] args) {		Class
c = Heros.class; try { Object object = c.newInstance(); Field[] fields = c.getDeclaredFields(); System.out.println("Heros所有属性:"); for (Field f : fields) { System.out.println(f); } Field field = c.getDeclaredField("name"); field.setAccessible(true); field.set(object, "炸弹人"); System.out.println("修改后的属性值:"); System.out.println(field.get(object)); System.out.println("修改属性后的Heros:"); System.out.println((Heros)object); } catch (Exception e) { e.printStackTrace(); } }}

  运行结果:

UserInfo所有方法:private java.lang.String com.aaron.reflect.Heros.nameprivate java.lang.String com.aaron.reflect.Heros.typeprivate int com.aaron.reflect.Heros.camp修改后的属性值:炸弹人修改属性后的UserInfo:Heros [ name=炸弹人,  type=null,  camp=0]

  注意代码中有一句:

field.setAccessible(true);

  基于对属性的保护,默认为false。这里相当于一个授权的过程,设置true来允许操作这个属性。反射机制真强大。真机智。

转载于:https://www.cnblogs.com/AaronCui/p/4915017.html

你可能感兴趣的文章
第三天运算符--三元操作符
查看>>
C#学习笔记-输入数据判断(int、double、string)
查看>>
uva 10881
查看>>
ubuntu node.js Binaries方式安装(二进制文件安装)
查看>>
Ansible Ad-Hoc Commands
查看>>
sql 修改字段小记
查看>>
现代浏览器的工作原理
查看>>
完美CSS文档的8个最佳实践
查看>>
扒一扒.NET Core的环境配置提供程序
查看>>
python基础之ATM-2
查看>>
《20170926-构建之法:现代软件工程-阅读笔记》
查看>>
js中for循环闭包问题记录
查看>>
关于xxx.h file not found 的问题
查看>>
CS224n学习资源汇总
查看>>
部署web Service到tomcat
查看>>
java使用sax解析xml
查看>>
20个常用正则表达式
查看>>
hdfs切片的计算方式
查看>>
yolo源码解析(一)
查看>>
UVA-10061 How many zero's and how many digits ? (数论)
查看>>