获取class的三种方法:
1. Class(数据类型) a=Class.forname("写入一个完整类名");
2. 写一个类的对象,然后调用对象的getClass方法。
String a=new String("hdhdhhdh");
Class x=a.getClass;
3. 直接用类本身的Class方法。
比如:String.Class;
如果想要某一个类中的静态代码块中的方法执行,那么可以用一个Class.forName();
因为静态代码块是在类加载时执行的,forName可以加载类。
获取类路径的绝对路径;
这行代码返回一个绝对路径,是一个字符串,可以写在io流的字符串位置。行程一个流后,用集合加载。
这行代码要求,文件必须在类路径下。
字符串里填的是文件相对路径。
这行代码返回一个绝对路径,是一个字符串,可以写在io流的字符串位置。行程一个流后,用集合加载。
这行代码要求,文件必须在类路径下。
字符串里填的是文件相对路径。
这几行代码展示了用将绝对路径变成一个流,然后加载到Properties这个集合中。然后用这个对象的,load方法加载这个流然后用这个集合的key取另一个值。
资源绑定器方式:
要求用法如图。文件必须是properties文件,后缀名也必须是这个。
然后用如图上的类然后用类.getBundle("这里写文件名的相对路径,文件不需要写后缀")
双亲委派机制,类加载器会先加载
启动类加载器
扩展类加载器
应用类加载器
这个顺序来加载,每当前一个无法加载就会启用下一个。
通过反射机制访问类的属性。
访问私有属性要先用这个方法。
首先用反射得到这个类,然后用newIntance方法得到对象。然后用Field得到一个属性对象,方法为,目标类的getDeclaredField(得到公共的属性)方法。写入属性名字得到属性对象。对象.set(目标类的对象,数据)
通过反射机制访问类方法的方法:
首先要得到反射的类。
然后得到这个类的对象。
然后用getDeclaredMethod这个方法得到类的方法。(得到公共的方法)然后用invoke方法写入对象和数据。最后一行的代码意思为,调用obj的loginMethod方法传入后面两个字符串数据得到一个object返回值。
通过放射得到构造方法:
首先得到反射的类。
然后得到反射的类的对象。
然后用getDeclaredConstructor(得到公开的构造方法)。
然后用对象.newInstance(这个方法底层就是无参构造方法)传入数据,完成。
通过反射得到父类,父接口:
首先得到反射的类。
然后用这个反射的类中的一个方法getSuperclass(翻译得到父类)
因为继承是单继承,但是接口可以多个实现所以接口不一定是一个。用的方法getInterfaces这个方法返回一个接口类数组
通过反射得到注解
先得到发射的类,再得到类的方法,然后得到方法的注解,然后用注解可以得到注解属性。