反射

反射
通过反射可以知道任意类中的属性和方法,包括私有的,对于任意对象也是可以调用的。还可以利用反射得到需要的未知的信息。
1.获取类对象的三种方式
①通过对象获取

Class clazz1=new Dept().getClass();

②通过类名获取

Class clazz=Dept.class;

③通过全类名获取(全类名:包名+类名)

Class clazz2=Class.forName("com.pojo.Dept");

2.得到属性对象

Dept dept=new Dept();
Field field=clazz.getDeclaredField("deptno");
//设置属性对象的访问权限
field.setAccessible(true);
field.set(dept, 111);
System.out.println(field.get(dept));

3得到方法对象

	 	 Method method=clazz1.getDeclaredMethod("setDeptno",Integer.class);
		 method.setAccessible(true);
		 method.invoke(dept,222);
		 Method method1=clazz1.getDeclaredMethod("getDeptno");
		 method1.setAccessible(true);
		 method1.invoke(dept);
		 System.out.println(dept);

得到构造方法

		Constructor con=clazz2.getDeclaredConstructor(Integer.class,String.class,String.class);
		con.setAccessible(true);
		Object o=con.newInstance(111,"实施","上海");
		if(o instanceof Dept) {
			Dept d=(Dept) o;
			System.out.println(d);
		}

反射让人难以理解的就是在代码量相对较少的情况下初学的时候显得比较麻烦,而且不是特别的容易理解,而且花费的时间弄明白这个也需要花很多时间,不知道我理解的跟你们理解的是否相同,个人见解,有好的建议也可以告诉我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值