Java-反射

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

class是所有反射操作的源头,取得Class对象:public final Class<?> getClass(),反射中所有泛型定义为?,返回值为Object。获取类的实例化对象有三种方式

  1. 通过Object类的getClass()取得
  2. 通过“类.class“取得(在Hibernate开发中使用)
  3. 使用Class类的static方法forName()获取(主要使用)
package com.joeaaa.demo15;
/*
* 反射
*/
class Person{

}

public class ReflectClassTest {
    public static void main(String[] args) {
        /*
        * 方式一:Object类的getClass()
        */
        Person person1 = new Person(); // 正着操作
        Class<?> class1 = person1.getClass(); // 取得Class对象
        System.out.println(class1.getName()); // com.joeaaa.demo15.Person

        /*
        * 方式二:类.class取得
        */
        Class<?> class2 = Person.class; // 取得class对象
        System.out.println(class2.getName()); //com.joeaaa.demo15.Person

        /*
        * 方式三:使用Class类内部定义的static方法 forName()
        */
        Class<?> class3 = null;
        try {
            class3 = Class.forName("com.joeaaa.demo15.Person");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        assert class3 != null;
        System.out.println(class3.getName()); // com.joeaaa.demo15.Person
    }
}