反射

反射的介绍

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.
反射_第1张图片

反射的使用

获取Class对象的三种方式

1.Object--->getClass
2.任何数据类型包括基本数据类型都有一个静态的class属性
3.通过Class类的静态方法:forName(String className)(常用)

package com.cy;
public class StudentTest {
    public static void main(String[] args) {
        //getClass()方式
 Student student=new Student();
        Class stuClass=student.getClass();
        System.out.println(stuClass.getName());
        //静态的class属性方式
 Class stuClass2=Student.class;
        System.out.println(stuClass2);
        System.out.println(stuClass==stuClass2);
        //3.通过Class类的静态方法:forName(String className)(常用)
 try {
            Class stuClass3=Class.forName("com.cy.Student");
            System.out.println(stuClass3);
            System.out.println(stuClass==stuClass3);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}
class Student{}

注意:在运行期间,一个类,只有一个Class对象产生
三种方式常用第三种,第一种对象都有了还要反射干什么。第二种需要导入类的包,依赖太强,不导包就抛编译错误。一般都第三种,一个字符串可以传入也可写在配置文件中等多种方法

通过反射获取构造方法并使用

反射_第2张图片

反射_第3张图片

你可能感兴趣的:(java)