如何获取Class的实例
1、调用运行时类的本身的.class属性
Class clazz = Person.class;
Person person = clazz.newInstance();
2、通过运行时类的对象
Person person = new Person(); Class clazz = person.getClass();
3、通过Class的静态方法
Class clazz = Class.forName("com.bean.Person");
通过的是类的路径
4、类加载器
ClassLoader classLoader = this.getClass().getClassLoader(); Class<?> clazz = classLoader.loadClass("com.bean.Person");
类的编译过程
类的加载过程
ClassLoader
ClassLoader
@Test public void test3(){ //系统类加载器 ClassLoader loader1 = ClassLoader.getSystemClassLoader(); System.out.println(loader1);//sun.misc.Launcher$AppClassLoader@18b4aac2 ClassLoader parent = loader1.getParent(); System.out.println(parent);//sun.misc.Launcher$ExtClassLoader@a09ee92 Class clazz = Person.class; ClassLoader classLoader = clazz.getClassLoader(); System.out.println(classLoader);//sun.misc.Launcher$AppClassLoader@18b4aac2 }
ClassLoader能做什么
用于加载文件
@Test public void test4() throws IOException { //创建ClassLoader ClassLoader loader = this.getClass().getClassLoader(); InputStream in = loader.getResourceAsStream("com\\bean\\jdbc.properties"); //创建Properties Properties properties = new Properties(); properties.load(in);
Object user = properties.get("user"); Object password = properties.get("password"); System.out.println(user); System.out.println(password); }
使用流之后需要 在工程下创建文件
使用ClassLoader可以在包下创建文件