当一个类被加载以后,Java虚拟机会自动产生一个class对象。通过这个Class对象我们就能获得加载到虚拟机当中Class对象对应的方法、成员以及构造方法的的声明和定义等信息。

获取Class对象共有以下三种方法。

第一种

  类名.class

public class fg {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Class c = fg.class;//第一种获取Class类
        System.out.println("包路径"+c.getPackage());
        System.out.println("类名称"+c.getPackage());
        System.out.println("包继承类"+c.getPackage());
    }

}

运行结果:

第二种

  类名 对象名  = new 类名();

  对象名.getClass();

public class fg {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        fg d =new fg();//第二种获取Class类
        Class c = fg.class;//第一种获取Class类
        System.out.println("包路径"+c.getPackage());
        System.out.println("类名称"+c.getPackage());
        System.out.println("包继承类"+c.getPackage());
    }

}

运行结果如上图

第三种

  Class.forName(“包名+类名”){该种方法会抛出ClassNotFoundException异常,需要用try-catch捕获}

public class fg {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        try {//第三种获取Class类
            Class c = Class.forName("com.wx.fg");
            System.out.println("包路径"+c.getPackage());
            System.out.println("类名称"+c.getPackage());
            System.out.println("包继承类"+c.getPackage());
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }