博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
反射机制——获取Class中的字段
阅读量:6670 次
发布时间:2019-06-25

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

hot3.png

一、demo1

/** * @Title: ReflectDemo3.java * @Package com.lh.reflection * @Description: TODO* @author Liu * @date 2018年1月23日 下午6:05:34 * @version V1.0 */package com.lh.reflection;import java.lang.reflect.Field;import com.lh.reflection.bean.Person;/** * @ClassName: ReflectDemo3 * @Description: 获取Class中的字段* @author Liu* @date 2018年1月23日 下午6:05:34 *  */public class ReflectDemo3 {	/**	 * @throws Exception *	* @Title: main 	* @Description: TODO	* @param @param args	* @return void	* @throws 	*/	public static void main(String[] args) throws Exception {		getFieldDemo();	}	/**	 * @throws Exception *	* @Title: getFieldDemo 	* @Description: TODO	* @param 	* @return void	* @throws 	*/	private static void getFieldDemo() throws Exception {		String name = "com.lh.reflection.bean.Person";		// 寻找该类名称字节码文件 ,并加载至内存,生成Class对象		Class
clazz = (Class
) Class.forName(name); Field field = null; //clazz.getField("age");//只能获取公有的 field = clazz.getDeclaredField("age");//只获取本类,但包含私有 //对私有字段的访问取消权限检查,暴力访问,应避免! field.setAccessible(true); Person person = clazz.newInstance(); field.set(person, 20); Object obj = field.get(person); System.out.println(obj); } }

二、demo2

    ReflectPoint.java

package staticimport.reflect;public class ReflectPoint {	private int x;	public int y;		private String type = "bball";		private String edu = "itcast";		private String pe = "basketball";		public ReflectPoint(){}		public ReflectPoint(int x, int y) {		this.x = x;		this.y = y;	}	@Override	public String toString() {		return "ReflectPoint [x=" + x + ", y=" + y + ", type=" + type + ", edu=" + edu + ", pe=" + pe + "]";	}}
package staticimport.reflect;import java.lang.reflect.Field;public class ReflectFieldTest {	public static void main(String[] args) throws Exception {		ReflectPoint reflectPoint = new ReflectPoint(4, 5);				Field fieldY = reflectPoint.getClass().getField("y"); 		System.out.println(fieldY.get(reflectPoint));				//不可见//		Field fieldX = reflectPoint.getClass().getField("x");		//获取本类已声明的字段(包含私有)		Field fieldX = reflectPoint.getClass().getDeclaredField("x");				//设置可强制访问		fieldX.setAccessible(true);				fieldX.set(reflectPoint, 10);				//访问		System.out.println(fieldX.get(reflectPoint));	}}

 

转载于:https://my.oschina.net/Howard2016/blog/1611990

你可能感兴趣的文章
布局管理器之CardLayout(卡片布局管理器)
查看>>
两个js冲突怎么解决?试试这四个方法
查看>>
关于查询扩展版ESI高被引论文的说明
查看>>
167.5. libvirt
查看>>
HTTP 头部解释
查看>>
DataUtil
查看>>
129.3. RBridge
查看>>
Appium+python自动化9-SDK Manager
查看>>
RDLC系列之五 初试XAML
查看>>
Redis配置文件之————redis.conf配置及说明
查看>>
PHP Ajax JavaScript 实现 无刷新附件上传
查看>>
Git错误提示之:fatal: Not a git repository (or any of the parent directories): .git
查看>>
122.2. varnish utility
查看>>
在win7主机上为你的linux虚拟机配置ntp服务
查看>>
解析MYSQL BINLOG 二进制格式(2)--FORMAT_DESCRIPTION_EVENT
查看>>
Oracle 12c DBCA浅析(r12笔记第48天)
查看>>
MYSQL INNODB innodb_thread_concurrency相关参数理解
查看>>
SQL优化常用方法16
查看>>
Oracle并行操作——并行DML操作
查看>>
[转]Django Practice - Django 权限控制
查看>>