2.理解Class类并获取Class实例
1.理解:
- 对象照镜子后可以得到的信息:某个类的属性、方法和构造器、某个类到底实现了哪些接口。对于每个类而言,JRE都为其保留一个不变的Class类型的对象。一个Class对象包含了特定某个结构(class/interfacelenum/annotation/primitive type/void/门)的有关信息。
-
Class本身也是一个类
-
Class对象只能由系统建立对象
-
一个加载的类在JVM中只会有一个Class实例
-
一个Class对象对应的是一个加载到JVM中的一个.class文件每个类的实例都会记得自己是由哪个Class 实例所生成通过Class可以完整地得到一个类中的所有被加载的结构
-
Class类是Reflection的根源,针对任何你想动态加载、运行的类,唯有先获得相应的Class对象
2.Class的方法
3.创建Class类的方式有哪些
//先创建环境,定义Person、Student和Teacher类:
class person{
String name;
public person(){
}
public person(String name){
this.name=name;
}
@Override
public String toString() {
return "person{" +
"name='" + name + '\'' +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class student extends person{
public student(){
this.name="学生";
}
}
class teacher extends person{
public teacher(){
this.name="老师";
}
}
//以下是三种获取方式:
public class L3 {
public static void main(String[] args) throws ClassNotFoundException {
person t1=new student();
System.out.println("这个人是"+t1.name);
//1.对象获取
Class c1 = t1.getClass();
System.out.println(c1.hashCode());
//forName获取
Class c2 = Class.forName("student");
System.out.println(c2.hashCode());
//类名.class获取
Class<student> c3 = student.class;
System.out.println(c3.hashCode());
}
}
程序运行结果如下: