Java中最强大的技术之一 反射 获取Class类

Java中最强大的技术之一  反射  获取Class类

  • 1、反射概述
  • 2、类的加载过程
  • 3、获取Class类的三种方式
    • 3.1 通过 class.forname()来获取Class对象
    • 3.2 通过类名.class来获取Class对象
    • 3.3 通过对象的getClass()来获取Class对象
    • 3.4如果是一个基本数据类型,那么可以通过Type的方式来获取Class对象

1、反射概述

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够调用它的任意一个方法和属性;
这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

要想解剖一个类,必须先要获取到该类的字节码文件对象。
而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象

2、类的加载过程

Class类的实例表示正在运行的Java应用程序中的类和接口
每个类只会产生一个Class对象,在类加载的时候自动创建

Java中最强大的技术之一 反射 获取Class类_第1张图片

3、获取Class类的三种方式

3.1 通过 class.forname()来获取Class对象

        Class clazz = Class.forName("com.mashibing.entity.Emp");
        System.out.println(clazz.getPackage());
        System.out.println(clazz.getName());
        System.out.println(clazz.getSimpleName());
        System.out.println(clazz.getCanonicalName());

3.2 通过类名.class来获取Class对象

        Class<Emp> clazz = Emp.class;
        System.out.println(clazz.getPackage());
        System.out.println(clazz.getName());
        System.out.println(clazz.getSimpleName());
        System.out.println(clazz.getCanonicalName());

3.3 通过对象的getClass()来获取Class对象

        Class clazz = new Emp().getClass();
        System.out.println(clazz.getPackage());
        System.out.println(clazz.getName());
        System.out.println(clazz.getSimpleName());
        System.out.println(clazz.getCanonicalName());

3.4如果是一个基本数据类型,那么可以通过Type的方式来获取Class对象

        Class type = Integer.TYPE;
        
        System.out.println(type.getName());
        System.out.println(type.getCanonicalName());

你可能感兴趣的:(Java,java,反射)