"这三种方式,我们一定要掌握"
字节码文件获取的三种方式
1. 对象名.getCalss();
2. 类名.class
3. Class.forName("全类名");
代码示例:
//1.通过对象获取
Student s = new Student();
s.getClass()
//getClass() 方法是在哪个类中的?Object
//为咩这个方法要定义在Object类里面?
//因为所有的类都有字节码文件,我们要写在所有的类共同的父类中.(向上抽取)
//因为Object是所有的类直接父类或者间接父类,写在Object中,所有的类都可以用这个方法了
//2,通过类名.class调用
Student.class
//3,Class 类中的一个静态方法获取
Class.forName("全类名");//全类名:包名 + 类名
以上这三种方法,你觉得那种较为灵活,为咩?
因为第一种和第二种,如果我们想要获取另外类的class对象.
此时得去修改代码.
因为第三种,我们可以把全类名写在本地的文本文件中
然后用IO流,读这一整行. BufferedReader 因为有一个 readLine()
这个方法的返回值line就是读到的全类名
这样我们可以和第三种方式这样去结合
Class.forName(line);
BufferedReader br = new BufferedReader(new File.......)
String line = br.readLine();
Class.forName(line);
此时我们一开始想要获取的是Student.然后第二次我们想要获取Person.
1.不用到代码中修改代码了
2,我们只需要修改文本文件中的那段话就可以了
字节码文件获取的三种方式
1. 对象名.getCalss();
2. 类名.class
3. Class.forName("全类名");
代码示例:
//1.通过对象获取
Student s = new Student();
s.getClass()
//getClass() 方法是在哪个类中的?Object
//为咩这个方法要定义在Object类里面?
//因为所有的类都有字节码文件,我们要写在所有的类共同的父类中.(向上抽取)
//因为Object是所有的类直接父类或者间接父类,写在Object中,所有的类都可以用这个方法了
//2,通过类名.class调用
Student.class
//3,Class 类中的一个静态方法获取
Class.forName("全类名");//全类名:包名 + 类名
以上这三种方法,你觉得那种较为灵活,为咩?
因为第一种和第二种,如果我们想要获取另外类的class对象.
此时得去修改代码.
因为第三种,我们可以把全类名写在本地的文本文件中
然后用IO流,读这一整行. BufferedReader 因为有一个 readLine()
这个方法的返回值line就是读到的全类名
这样我们可以和第三种方式这样去结合
Class.forName(line);
BufferedReader br = new BufferedReader(new File.......)
String line = br.readLine();
Class.forName(line);
此时我们一开始想要获取的是Student.然后第二次我们想要获取Person.
1.不用到代码中修改代码了
2,我们只需要修改文本文件中的那段话就可以了