java面试题网

普通会员

483

帖子

9

回复

187

积分

楼主
发表于 2019-08-26 15:24:39 | 查看: 5066| 回复: 0

java通过反射访问字段值

java通过反射访问字段值
package com.wkcto.chapter08.demo02;

import java.lang.reflect.Field;

/**
 * 通过反射访问字段
 * 	
 * @author 蛙课网
 *
 */
public class Test02 {

	public static void main(String[] args) throws Exception{
		//1)创建Class对象
		Class<?> class1 = Person.class;
		
		//2) 访问name公共字段
		//2.1 反射name字段
		Field nameF = class1.getField("name");
		//2.2 给字段赋值, name字段是一个实例变量, 先创建实例
		//2.2.1 创建Person类的实例
		Object p1 = class1.newInstance();
		//2.2.2 给字段赋值
		//field.set( 实例名,  字段值 )    
		nameF.set(p1, "wkcto");
		//2.3 访问字段的值, 
		//field.get( 实例名 )
		System.out.println(  nameF.get(p1) );
		System.out.println( p1 );
		
		//3) 访问gender私有字段
		//3.1 反射gender字段 , 非公共字段
		Field genderF = class1.getDeclaredField("gender");
		//设置字段的可访问性
		genderF.setAccessible(true);
		//3.2 设置字段值
		genderF.set(p1 ,  "男");
		//3.3访问
		System.out.println( genderF.get(p1));		
		System.out.println( p1 );
		
		//4)访问静态字段, 在实例名的位置传递null
		//反射字段
		Field countryF = class1.getDeclaredField("country");
		//设置字段的值
		countryF.set(null, "china");
		//读取字段的值
		System.out.println( countryF.get(null));
	}

}


文章来自www.wityx.com,转载请注明出处!原文地址http://www.wityx.com/post/1208_1_1.html


java面试题交流群:327440556

您需要登录后才可以回帖 登录 | 立即注册

java面试题网www.wuliaokankan.cnjava建站系统提供技术支持V2.1 网站地图 © 2016-2018