第八堂课2(反射)
一、什么是反射?
概念:反射是java语言中的一种机制,通过这种机制可以动态的实例化对象、读写属性、调用方法(重点)
二、类类:将所有的类放在一起叫做类类
例如:
所有狗 狗类 Dog (泛指) 狗对象 旺财(特指)
所有猫 猫类 Cat (泛指) 猫对象 肥波(特指)
所有类 类类 java.lang.Class(泛指) 类对象 特定类(特指)
三、一切反射相关的代码都从获得类对象开始
1.Class.forName(完整类名)
案例:
知识点:1.getName():获取完整的类名(包名+类名)
2.getSimpleName():获取简写类名
2.类名.class
案例:
3.对象.getClass();
案例:
注:同一个类的类对象只会被创建一次 ( 地址相等用==比较地址)
四、常见的异常:
1.java.lang.ClassNotFoundException:类没有找到
出现这个异常有两种情况:
1.类名错误
2.架包没有导入
2.java.lang.NoSuchMethodException:方法不匹配
3.java.lang.IllegalArgumentException;非法参数异常
出现这个异常有一种情况:
1.在传参时跟具体使用时不匹配
*五、反射的三大作用(反射的接口和类都在java.lang.reflect.里面)
1.实例化对象(三种方式)
案例:(注意看图中的注释)
1.getConstructor()的底层代码中:
1.Class<?>:可变参数
2.parameterTypes:参数类型(类对象)
2.读写属性(Field set/get)
案例:
(注意看图中的注释)
3.动态调用方法 (Method m; m.invoke)
案例:
(注意看图中的注释)
六、访问修饰符(看懂案例)
1.getModifiers()
2.作用:使用二进制的方式将所有的修饰符的二进制进行相加
案例:
感谢各位的光临寒舍!
转载:https://blog.csdn.net/men_ma/article/details/105500379
查看评论