最近做的一些笔试题经常遇到考 getClass()
方法相关的知识点,今天整理出来总结下。
先来定义两个类:
People类是父类,Student类继承自父类。
class People {
String name;
int age;
// 父类无参构造方法
People () {}
People (String name, int age) {
this.name = name;
this.age = age;
}
void sayHello () {
System.out.print("Hello, I am a people. my name is" + name);
}
}
class Student extends People{
String name;
int age;
Student (String name, int age) {
this.name = name;
this.age = age;
}
void sayHello (String name, int age) {
System.out.print("Hello, I am student. my name is" + name);
}
}
分别创建两个对象,并调用getClass()方法
public class Main {
public static void main(String[] args) {
People man = new People("狗蛋",26);
People stu = new Student("小明",18);
System.out.print(man.getClass()); // 输出 class People
System.out.print(man.getClass().getName()); // 输出 People
System.out.print(stu.getClass()); // 输出 class Student
System.out.print(stu.getClass().getName()); // 输出 Student
}
}
再来看一个类型消除相关的知识点。
public class Main {
public static void main(String[] args) {
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(1);
ArrayList<String> list2 = new ArrayList<>();
list2.add("1");
System.out.print(list1.get(0).getClass()); // 输出 class java.lang.Integer
System.out.print(list2.get(0).getClass()); // 输出 class java.lang.String
// java在编译时会进行类擦除,两者都是java.util.ArrayList
System.out.print(list1.getClass() == list2.getClass()); // 输出 true
}
}