反射①:如何获取class对象六种方法

获取class对象的六种方法

了解:class类——是Java反射机制的入口,封装了一个类或接口的运行信息,通过调用Class类的方法可以获取这些信息,其特点如下:

1、该类在java.lang包中;

2、该类被final所修饰,即该类不可以被子类继承

3、该类实现了Serializable接口

4、该类的构造方法被private所修饰,所以不能通过new关键字创建该类的对象

①先创建一个类

//创建一个Student类
package com.zzj.vo;

public class Student {

    public String name;
    
    public Student(){
        
    }
    
    public Student(String name){
        this.name = name;
    }
    
    public void doHomework(){
        System.out.println(name+"正在写作业...");
    }
    
}

②测试获取对象

第一种:Class.forName方法获取

Class clazz = null;
try {
        clazz = Class.forName("com.zzj.vo.Student");
        System.out.println(clazz.getName());
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
}        
//输出结果为com.zzj.vo.Student

第二种:类名.class方法获取

clazz = Student.class;
System.out.println(clazz.getName());
//输出结果为com.zzj.vo.Student

第三种:对象.getClass()

clazz = new Student().getClass();
System.out.println(clazz.getName());
//输出结果为com.zzj.vo.Student

第四种:基本数据类型对应的class对象:包装类、TYPE

clazz = Integer.TYPE;
System.out.println(clazz.getName());//输出int
clazz = Integer.class;
System.out.println(clazz.getName());//输出java.lang.Integer

第五种:数组类型对应的class:元素类型[].class

clazz = String[].class;
System.out.println(clazz.getName());
//输出结果为[Ljava.lang.String;

第六种:某个类父类所对应的的class对象

clazz = Student.class.getSuperclass();
System.out.println(clazz.getName());
//输出结果为java.lang.Object
原文地址:https://www.cnblogs.com/yimengxianzhi/p/12160355.html