java基础之反射机制

1、什么是 反射机制?

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

2、反射机制有什么用?

  1)在运行时判断任意一个属性所属的类

  2)在运行时构造任意一个类的对象

  3)在运行时判断任意一个类所具有的成员变量和方法

  4)在运行时调用任意一个对象的方法

  5)生成动态代理

3、反射机制相关的API

  通过一个对象获得完整的包名与类名

  
package www.demo.reflect;

public class testReflect {

    public static void main(String[] args) {
        testReflect tr = new testReflect();
        System.out.println(tr.getClass().getName());
    }
}

//运行结果: www.demo.reflect.testReflect
View Code

  实例化Class对象

package www.demo.reflect;

public class testReflect01 {
    public static void main(String[] args) {
             Class<?> class1 = null;
            Class<?> class2 = null;
            Class<?> class3 = null;
            // 一般采用这种形式
            class1 = Class.forName("net.xsoftlab.baike.TestReflect");
            class2 = new testReflect().getClass();
            class3 = testReflect.class;
            System.out.println("类名称   " + class1.getName());
            System.out.println("类名称   " + class2.getName());
            System.out.println("类名称   " + class3.getName());
    }
}
View Code

  获取一个对象的父类和实现接口

package www.demo.reflect;

import java.io.Serializable;

public class testReflect02 implements Serializable {
    private static final long serialVersionUID = -2862585049955236662L;

    public static void main(String[] args) throws Exception {
        Class<?> clazz = Class.forName("net.xsoftlab.baike.TestReflect");
        // 取得父类
        Class<?> parentClass = clazz.getSuperclass();
        System.out.println("clazz的父类为:" + parentClass.getName());
        // clazz的父类为: java.lang.Object
        // 获取所有的接口
        Class<?> intes[] = clazz.getInterfaces();
        System.out.println("clazz实现的接口有:");
        for (int i = 0; i < intes.length; i++) {
            System.out.println((i + 1) + ":" + intes[i].getName());
        }
        // clazz实现的接口有:
        // 1:java.io.Serializable
    }
}

  

  

猜你喜欢

转载自www.cnblogs.com/Momery/p/9100623.html