美文网首页
Java反射学习总结

Java反射学习总结

作者: 杨凯飞 | 来源:发表于2018-05-29 19:36 被阅读0次

    反射的概述

        什么是Java的反射机制

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

        Java的反射机制的作用

                是用来编写一一些通用性较高的代码或者框架的时候使用。

    反射常用对象的概述

          Class

                  Class类的实例表示正在运行的Java应用程序中的类和接口

          Constructor

                  关于类的单个构造方法的信息以及对它的访问权限

          Field

                  Field提供有关类或接口的单个字段的信息,以及对它的动态访问权限。

          Method

                  Method提供关于类或接口.上单独某个方法的信息。

    反射对应类中的成员

                                        Class类

        Java中java.lang.Class类用于表示一一个类的字节码(.class)文件

         如何得到某个class文件对应的Class对象

                1.已知类和对象的情况下

                        类名.class

                        对象.getClass() --- Object类提供

                2.未知类和对象的情况下

                    Class.forName(“包名类名”)

                    Class类代表某个类的字节码,并提供了加载字节码的方法:forName(”包名.类名”)

                     forName方法用于加载类字节码到内存中,并封装成一个Class对象

    获得class对象

                                    Constructor类

    Constructor类的实例对象代表类的一一个构造方法

    得到某个类所有的构造方法

          Constructor [] constructors= Class.forName("java.lang.String").getConstructors();

    得到指定的构造方法并调用

        Constructor constructor = Class.forName("java.lang.String").getConstructor(String.class);

         String str = (String)constructor.newInstance("aaa");

    Class类的newInstance()方法用来调用类的默认构造方法

        String obj =(String)Class.forName("java.lang.String").newInstance();

    Constructor

                                        Field类

    Field类代表某个类中的一个成员变量,并提供动态的访问权限

    Field对象的获得

         1. 得到所有的成员变量

                  Field[] fields = c.getFields(); //取得所有public属性(包括父类继承)

                  Field[] fields = c.getDeclaredFields(); //取得所有声明的属性

        2.得到指定的成员变量

                 Field name = C. getField("name");

                  Field name = C. getDeclaredField("name");

        3.设置Filed变量是否可以访问

              field. setAccessible(boolean);

        4.Field变量值的读取、设置

              field.get(obj)

              filed.set(obj,value);

    Field 

                                        Method类

    Method类代表某个类中的一个成员方法

    Method对象的获得

        1.获得所有方法

            getDeclaredMethods()

            getMethods()

        2.获得指定的方法

            getDeclaredMethod(String name, Class<?> .. parameterTypes)

            getMethod(String name, Class<?> ... parameterTypes)

    通过反射执行方法

        invoke(Object obj,Object... args)

    Method

    相关文章

      网友评论

          本文标题:Java反射学习总结

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