反射之Class类

2021-03-11  本文已影响0人  小鱼_a563

Class类

Class.png

Class类常用方法

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="学生";
    }
}
代码结果.png

那些类型有Class对象

class:外部类,成员(成员内部类,静态内部类),局部内部类,匿名内部类。
interface:接口
[]: 数组
enum:枚举
annotation:注解@interface
primitive type:基本数据类型
void
上一篇下一篇

猜你喜欢

热点阅读