Java反射

        JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制;

         这次做的项目sql语句是由反射自动生成的,平时用到反射的时候比较少,所以现在再次熟悉一下。

        反射的类:

public class ReflectEntity {
	public Integer id =11;
	public String name;
	public String sex;
	public double money;
	public void Hello(){
		System.out.println("Hello World!!!!");
	}
}

        首先是关于是通过反射获取设置类的属性。

       

import java.lang.reflect.Field;

public class Reflect {
	@SuppressWarnings("rawtypes")
	public static void main(String[] args) throws Exception {
		Class c=ReflectEntity.class;
		//c3是运行时类
		ReflectEntity r=new ReflectEntity();
		Class c3=r.getClass();
		//调用ReflectEntity无参构造方法
		Object o=c.newInstance();
		//获取所有的属性
		Field[] fs=c.getDeclaredFields();
		for(Field f:fs){			
			System.out.println(f);
			//获取属性修饰符,列如public,static等,是int类型如:public:1,private:2,static4等
			System.out.println(f.getModifiers());
			//属性类型
			System.out.println(f.getType().getSimpleName());
			//属性的名字
			System.out.println(f.getName());
		}
		//获取特定属性
		Field id =c.getDeclaredField("id");
		//获取属性值
		System.out.println(id.get(o));
		//给o对象id赋值
		id.setAccessible(true);// 强制访问private变量
		id.set(o, 33);
		System.out.println(id.get(o));		
		
	}
}

通过反射调用方法

	Class c=ReflectEntity.class;
		//获取所有方法
		Method[] s=c.getDeclaredMethods();
		for (Method m:s) {
			//通过invoke调用方法,需传入构造方法
			m.invoke(c.newInstance());
		}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值