反射之Class类
2021-03-11 本文已影响0人
小鱼_a563
Class类
Class.pngClass类常用方法
Class类常用方法.png- 通过代码简单解释
package com.yu.javalearn.reflection;
/**
* @author 小鱼
* @version 1.0
* @date 2021/3/8 11:31 下午
* 测试Class类的创建方式
* 1.总共有4种方式
* 2.通过c1,c2,c3的hashCode我们可以知道,一个类在JVM中只有一个Class
*/
public class Test01 {
public static void main(String[] args) throws ClassNotFoundException {
//常规创建一个对象
Person student=new Student();
System.out.println(student.name);
//第一种方式:通过具体的对象可以获取到Class类
Class c1 = student.getClass();
System.out.println(c1.hashCode());
//第二种方式:通过Class的forName()方法,传入类的路径就可以了
Class c2 = Class.forName("com.yu.javalearn.reflection.Student");
System.out.println(c2.hashCode());
//第三中方式:通过类本身可以获取到Class
Class c3= Student.class;
System.out.println(c3.hashCode());
//第四种:通过TYPE获取Class,但是这只使用与java内部的类可以这样使用
Class<Integer> c4 = Integer.TYPE;
System.out.println(c4);
//通过getSuperclass()方法可以获取父类的Class
Class c5 = c1.getSuperclass();
System.out.println(c5.hashCode());
}
}
class Person{
public String name;
}
class Teacher extends Person{
public String id;
public Teacher(){
this.name="老师";
}
}
class Student extends Person{
public String age;
public Student(){
this.name="学生";
}
}
- 运行结果
那些类型有Class对象
class:外部类,成员(成员内部类,静态内部类),局部内部类,匿名内部类。
interface:接口
[]: 数组
enum:枚举
annotation:注解@interface
primitive type:基本数据类型
void