美文网首页
反射 2018-05-07

反射 2018-05-07

作者: 辰321 | 来源:发表于2018-05-07 16:53 被阅读0次

    反射

    1:什么是反射:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;

    这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。

    过程:

    class.forName()方法获得class对象(主要用的方法)

    Class cls = class.forName("com.ggy.obj.Person");

    获得对象,构造方法,普通方法,属性

    获取类构造方法的方法有:

    getConstructor(class<>... paramterTypes)返回一个Constructor对象,反映此类的指定公共构造方法

    getConstructors()返回所有公共构造方法

    先实例化对象:

    Object obj = cls.newInstance();这是有无参的构造方法,若是没有则要先获取构造方法

    Constructor cons = cls.getConstructor(String.class,int.class);

    cons.newInstance("张三","王五")

    获取类中的方法:

    getDeclaredMethod(String name,Class... paramterTypes)返回指定已声明方法

    getDeclaredMethods()返回所有已声明的方法,不包括继承的方法

    当取得方法后(Method m2 = cls.getDeclaredMethod("setName", String.class)),

    m2.invoke(Object odj,Object... args)表示调用该obj对象的带args参数的方法

    调用成员属性:

    getDeclaredField(String name)返回指定的已声明属性

    getDeclaredFields()返回声明的所有属性

    属性在调用之前需要解除封装:

    Field nameField = cls.getDeclaredField("name"); // 获得name属性

    nameField.setAccessible(true); // 如何用解除封装了

    nameField.set(obj, "张三"); // Person对象.name = "张三"

    例:spring,bean

    相关文章

      网友评论

          本文标题:反射 2018-05-07

          本文链接:https://www.haomeiwen.com/subject/bvjvrftx.html