java中getclass与.class的认识
程序员文章站
2022-07-16 22:42:33
...
getclass与.class
反射
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
类与实例化
面向对象最重要的概念就是类(Class)和实例(Instance),类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同
getclass()与.class()
/**
* 创建Student的实例化对象A
*/
Student A = new Student();
String strA= new String(String.valueOf(A.getClass()));
System.out.println("实例化-对象A用getclass方法获得类:"+strA);
String strA1= new String(String.valueOf(Student.class));
System.out.println("用类Student的.class方法获取类的方法:"+strA1);
boolean boo= strA.equals(strA1);
System.out.println(boo);
实例化对象A用getclass获得类:class classGet$Student
类Student的.class获取类:class classGet$Student
true
/**
* StudentOpg是Student的子类
* 创建StudentOpg的实例化对象B
* 实例化对象.getclass()
* 类.class()
*/
StudentOpg B=new StudentOpg();
String strB= new String(String.valueOf(B.getClass()));
System.out.println("实例化-对象B用getclass方法获得类:"+strB);
String strB1= new String(String.valueOf(StudentOpg.class));
System.out.println("用类StudentOpg的.class方法获取类的方法:"+strB1);
/**此处判断父类Student的实例化和子类StudentOpg的实例化是否相等*/
boolean boo1= strA.equals(strB);
System.out.println(boo1);
实例化对象B.getclass获得类:class classGet$StudentOpg
类StudentOpg.class获取类:class classGet$StudentOpg
false
用实例化对象.getclass()的方法和类.class()的方法都可以获取当前对象的类型类和类的类型类.
获取到的类型类都是一一对应的.子类获取到的是子类的类型类,父类获取到的是父类的类型类,