Java(8)--初识反射

反射:

一个应用软件,在使用时不想让外部应用改变其内部代码,并且想使用继承该软件的接口或类,这就需要使用到反射机制。

反射机制的好处:提高了程序的可扩展性。

反射:java中可以动态获取已知类中成员的机制。 可以理解为对类的解剖。
涉及到的重要对象有Class、Filed、Method、Constructor

正常获取类的内部成员的方法就是new 一个对象,获取对象成员。
反射不同,反射是将类提取成字节码文件,然后将字节码文件进行解剖,再提取对象成员。

public class reflectDemo {

    public static void main(String[] args) throws Exception {
        // TODO 自动生成的方法存根
        getClass_1();
        getClass_2();
        getClass_3();
    }
    //反射涉及到的重要对象就是Class
    //该类用于描述字节码文件。 可以将字节码文件封装成对象。
    /*
    如何获取一个字节码文件对象?
    三种方式:
        1.通过object对象中的getclass方法获取。
        2.每一个数据类型都具备一个class属性,该class属性就代表一个该数据类型的class对象。
        3.通过class对象中的forName方法获取一个指定类的字节码文件对象。
    //获取类的字节码三种方式
        *//1.
        Class clazz=Class.forName("zgq.reflect.Person");
        //2.
        Class clazz1=new Person().getClass();
        //3.
        Class clazz2=Person.class;*
    */

    //3.通过class对象中的forName方法获取一个指定类的字节码文件对象。
    public static void getClass_3() throws Exception{
        Class class1=Class.forName("bean.Student");
        System.out.println(class1);
    }

    //2.每一个数据类型都具备一个class属性,该class属性就代表一个该数据类型的class对象。
    public static void getClass_2(){
        Class stu=Student.class;
        Student stu1=new Student();
        Class class1=stu1.getClass();
        System.out.println(stu==class1);
    }

    //1.通过object对象中的getclass方法获取。
    public static void getClass_1(){
        Student stu=new Student();
        Class class1=stu.getClass();

        Student stu1=new Student();
        Class class2=stu1.getClass();

        System.out.println(class1==class2);
    }
}

你可能感兴趣的:(java基础)