java反射操作

反射原理及优缺点:

参考博客:点击打开链接

相关操作代码:

public class ReflectTest {
	public static void main(String[] args) {
		try {
			/*反射机制获取类有3种方法*/
			//第一种方式
			Class<?> cl1 = Class.forName("ref.Student");
			//第二种方式
			//java中每个类都有class属性
			Class<?> cl2 = Student.class;
			//第三种方式
			//java语言中任何一个java对象都有getClass 方法  
			Student stu = new Student();
			Class<?> cl3 = stu.getClass();
			
			//创建实例
			Student student = (Student)cl1.newInstance();
			student.setName("张三");
			student.setAge(19);
			test1(student);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static void test1(Object obj){
		Class<?> cl = obj.getClass();
		try {
			//获取属性
			Field[] field = cl.getDeclaredFields();
			for(Field fld:field){
				fld.setAccessible(true); //设置些属性是可以访问的  
				if(fld.getName().equals("name")){
					fld.set(obj, "李四");
				}
				System.out.print("属性: "+fld.getName());
				System.out.print("属性值是:"+fld.get(obj));
				System.out.print(" 属性类型的名字是: "+fld.getType().getSimpleName());			
				System.out.println(" 修饰符: "+Modifier.toString(fld.getModifiers()));
				
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值