重点
路径
test05是Module(不过类路径下查找文件可以直接用文件名)
只记:1. 反射机制全为类路径
2. IO流文件为绝对路径/IDEA默认路径,而这种路径并不通用,所以实际开发中会用 通用绝对路径代替
反射机制常用类(操纵字节码文件)
Class < T >支持泛型,但实际开发中不用它的泛型,为什么?
因为反射机制就是为了构造出通用方法,让各种类共用。而泛型会限制数据类型,这就不能达到通用。所以不使用泛型,让它默认Object 以达复用!
reflect是个包
获取类的Class方法
Class.forName(“完整类名”)
对象.getClass()(这种方式基本数据类型不适用)
类名.class
注意:基本数据类型只能用这种方式
下面的 f.getName() = int !!!!!!!!!!!!!!!!!!!!
只有一份,所以内存地址是同一个:
通过 Class对象.newInstance();实例化对象
必须要有无参构造!!!
记住:
通用绝对路径
若空双引号,则返回当前类路径:…/out/production/test05/ (src下的文件也会同步到out下)
资源绑定器
只需要写文件名【properties后缀也不用写】(他会去类路径下找这个文件)
类加载器
Bootstrap ClassLoader
Extension ClassLoader
Application ClassLoader(也叫系统System类加载器)
所以,rt.jre和ext📂下的jre不用配置
双亲委派机制
双亲委派机制是为了载入类过程中的安全问题:
需要类加载时,首先父(启动类加载器)加载,没有找到的话母(扩展类加载器)加载,还是没有找到的话再由应用类加载器加载。
比如:防止一些人自己编写了java.lang.Object,想欺骗VM。
方法(不要去背,多敲多练,多敲多猜)
Field
了解方法:
重点:用反射机制设置、获得对象的属性
Method
反编译Method(了解一下) Modifier.toString(method.getModifiers())一次就可以,各种修饰符组合是一个特定的数字。
重点:用反射机制调用对象的方法
Constructor
反编译了解