IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Java反射与动态代理

    LengYue\'s Blog发表于 2018-07-05 17:16:07
    love 0
    基本用法 Java 反射API的第一个主要作用是获取程序在运行时刻的内部结构。这对于程序的检查工具和调试器来说,是非常实用的功能。只需要短短的十几行代码,就可以遍历出来一个Java类的内部结构,包括其中的构造方法、声明的域和定义的方法等。这不得不说是一个很强大的能力。只要有了java.lang.Class类 的对象,就可以通过其中的方法来获取到该类中的构造方法、域和方法。对应的方法分别是getConstructor、getField和getMethod。这三个方法还有相应的getDeclaredXXX版本,区别在于getDeclaredXXX版本的方法只会获取该类自身所声明的元素,而不会考虑继承下来的。Constructor、Field和Method这三个类分别表示类中的构造方法、域和方法。这些类中的方法可以获取到所对应结构的元数据。 反射API的另外一个作用是在运行时刻对一个Java对象进行操作。 这些操作包括动态创建一个Java类的对象,获取某个域的值以及调用某个方法。在Java源代码中编写的对类和对象的操作,都可以在运行时刻通过反射API来实现。考虑下面一个简单的Java类。 class MyClass { public int count; public MyClass(int start) { count = start; } public void increase(int step) { count = count + step; } } 使用一般做法和反射API都非常简单。 MyClass myClass = new MyClass(0); //一般做法 myClass.increase(2); System.out.println("Normal -> " + myClass.count); try { Constructor constructor = MyClass.class.getConstructor(int.class); //获取构造方法 MyClass myClassReflect = constructor.newInstance(10); //创建对象 Method method = MyClass.


沪ICP备19023445号-2号
友情链接