本帖最后由 燿陚√揚葳 于 2014-7-7 11:34 编辑
获取class的三种方法:
1.obj,getClass():用于获得对象的类型。通过每个对象都具备的方法getClass来获取,弊端:必须要创建该类对象,才可以调用getClass方法。
2. 类名.class:用于获得指定的类型,传参用。每一个数据类型(基本数据类型和引用数据类型)都有一个静态的属性class。弊端:必须要先明确该类
前两种方式不利于程序的扩展,因为都需要在程序使用具体的类来完成。
3.Class.forName(classname):用于做类加载。使用的Class类中的方法,静态的forName方法。指定什么类名,就获取什么类字节码文件对象,这种方式的扩展性最强,只要将类名的字符串传入即可
注意:Class.forName()返回字节码的两种返回方式:1.曾经加载过已经呆在虚拟机里的,直接返回
2.先加载缓存到虚拟机伦里,以后用的话就不用再加载了。
加载自定义类要写包名.类名 比如:String就写java.lang.String
三中获取方式代码如下:
- class Student{
- private int x;
- public int y;
- public String str1="basketball";
- public String str2="football";
- public String str3="pingpong";
- Student(int x,int y){
- this.x=x;
- this.y=y;
- }
- public String toString(){
- return str1+"***"+str2+"***"+str3;
- }
- }
- public class Demo {
- public static void main(String[] args) throws ClassNotFoundException {
- Student s=new Student(5,6);
- Class st1=s.getClass();
- Class st2=Student.class;
- Class st3=Class.forName("com.Student");
- System.out.println(st2);
- System.out.println(st1);
- System.out.println(st1==st2);
- System.out.println(st1==st3);
- }
- }
复制代码
|