1.反射机制的定义
反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够调用它的任意一个方法和属性;
这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
2.反射能做什么
在运行时判断任意一个对象所属的类;
在运行时构造任意一个类的对象;
在运行时判断任意一个类所具有的成员变量和方法;
在运行时调用任意一个对象的方法;
生成动态代理。
3.反射的常用API
//通过一个对象获得完整的包名和类名
public static void main(String[] args)
{
ReflectDemo reflectDemo = new ReflectDemo();
System.out.println(reflectDemo.getClass().getName());
/** * 运行结果:
* org.xiaowu.reflect.test.ReflectDemo
* */ }
//实例化Class类对象
public static void main(String[] args)
throws ClassNotFoundException {
Class<?> class1 = null;
Class<?> class2 = null;
Class<?> class3 = null; // 一般采用这种形式
class1 = Class.forName(“org.xiaowu.reflect.test.ReflectDemo”);
class2 = new ReflectDemo().getClass();
class3 = ReflectDemo.class;
System.out.println("类名称 " + class1.getName());
System.out.println("类名称 " + class2.getName());
System.out.println("类名称 " + class3.getName());
}
获取一个对象的父类和其实现的方法
package org.xiaowu.reflect.test;
import java.io.Serializable;
public class ReflectDemo6 implements Serializable
{
/** * */
private static final long serialVersionUID = 1L;
public static void main(String[] args)
throws ClassNotFoundException
{
Class<?> clazz = Class.forName(“org.xiaowu.reflect.test.ReflectDemo6”);
// 取得父类
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
}
}
想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、MySQL,redis、jvm、多线程、netty、kafka、的加尉xin(同英):cgmx9880 扩列获取java进阶资料学习,无工作经验不要加哦!
//获取某个类的全部方法
package org.xiaowu.reflect.t