反射
通过反射可以知道任意类中的属性和方法,包括私有的,对于任意对象也是可以调用的。还可以利用反射得到需要的未知的信息。
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);
}
反射让人难以理解的就是在代码量相对较少的情况下初学的时候显得比较麻烦,而且不是特别的容易理解,而且花费的时间弄明白这个也需要花很多时间,不知道我理解的跟你们理解的是否相同,个人见解,有好的建议也可以告诉我