反射的基本介绍和获取Class的实例
获取Class对象的实例
package com.zhujieandfanshe;
//获取Class对象的实例
public class TestGetClass01 {
public static void main(String[] args) throws ClassNotFoundException {
Person person = new Student();
//1.通过对象获取Class
Class c1 = person.getClass();
System.out.println(c1.hashCode());
//2.通过forClass
Class c2 = Class.forName("com.zhujieandfanshe.Student");
System.out.println(c2.hashCode());
//3.通过类获得Class
Class c3 = Student.class;
System.out.println(c3.hashCode());
//4.基本内置类的包装类都有一个Type属性,也可以获得对应的Class
Class c4 = Integer.TYPE;
System.out.println(c4);
//5.根据获得的Class获取父类的类型
Class c5 = c1.getSuperclass();
System.out.println(c5);
}
}
class Person {
public String name;
private int age;
//无参构造器
public Person() {
}
//有参构造器
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name=" + name + +
", age=" + age +
};
}
}
class Student extends Person {
public Student() {
this.name = "学生";
}
}
class Teacher extends Person {
public Teacher() {
this.name = "老师";
}
}
哪些类可以有Class对象
哪些类可以有Class的实例
package com.zhujieandfanshe;
import java.lang.annotation.ElementType;
//哪些类型有Class
public class Test02 {
public static void main(String[] args) {
Class c1 = Object.class;
Class c2 = Comparable.class;
Class c3 = String[].class;
Class c4 = int[][].class;
Class c5 = ElementType.class;
Class c6 = Override.class;
Class c7 = void.class;
Class c8 = Integer.class;
Class c9 = Class.class;
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
System.out.println(c5);
System.out.println(c6);
System.out.println(c7);
System.out.println(c8);
System.out.println(c9);
//只要元素类型和维度一样,就对应同一个Class
int[] a = {1, 2, 2, 3};
int[] b = {1, 2, 4, 5, 6, 6, 6, 4};
Class c10 = a.getClass();
Class c11 = b.getClass();
System.out.println(c10.hashCode());
System.out.println(c11.hashCode());
}
}
上一篇:
JS实现多线程数据分片下载
下一篇:
玩转ECharts制作图表之雷达图
