摘要:反射非常强大和有用。另外,反射可以用在映射结果集的列名到对象的方法。本教程将深入介绍反射。本教程还将清除一些关于范型信息在运行时可用性的认知混淆。类对象使用反射时,起点通常是需要使用反射检视的类的对象。
Java反射可以在运行时检视类、接口、属性和方法,而无需在编译时知道类名、方法名等等。它也同样使用反射支持实例化新的对象、调用方法和get/set属性值。
Java反射非常强大和有用。例如, Java反射可以用在映射JSON文件的属性到Java 对象的get/set方法,如Jackson、Gosn、Boon等库的实现。另外,反射可以用在映射JDBC结果集的列名到Java对象的get/set方法。
本教程将深入介绍Java反射。它将解释Java反射的基础知识,包括如何使用数组、注解、范型和动态代理,以及动态类的加载和重新加载。
它还将向您展示如何执行更具体的Java反射任务,例如读取类的所有getter方法,或访问类的私有字段和方法。
本教程还将清除一些关于范型信息在运行时可用性的认知混淆。一些人声称所有范型信息在运行时丢失,这是不正确的。
本教程描述基于Java8。
这是一个快速的Java反射示例,向你展示使用反射的代码格式:
Method[] methods = MyObject.class.getMethods(); for(Method method : methods){ System.out.println("method = " + method.getName()); }
Method [] methods=String.class.getMethods(); for (Method method:methods) { logger.debug("String 类方法名称:{},参数个数:{}",method.getName(),method.getParameterCount()); }
本示例从一个名为MyObject的类中获取一个Class对象。使用这个class对象展示获得它的方法列表,循环并输出方法名称。
Java 类对象使用Java反射时,起点通常是需要使用反射检视的类的Class对象。例如,获得名为MyObject类的Class对象可以这么写:
Class myObjectClass = MyObject.class;
现在,你可以引用类MyObject的Class对象。
在Java Reflection Class tutorial中有Class对象更详细的描述。
一旦你拥有表示某些类的Class对象的引用,你可以访问这些类的方法和属性。下面是访问一个Java类方法和属性的示例:
Class myObjectClass = MyObject.class; Method[] methods = myObjectClass.getMethods(); Field[] fields = myObjectClass.getFields();
一旦拥有一个java类的方法和属性的引用,就可以开始检视它们。你可以获得方法和属性的名称,采用的参数等等。你甚至可以通过这些方法和属性引用调用方法和使用get/set属性值。
在Java Reflection Fields tutorial和Java Reflection Methods tutorial教程中有关于访问方法和属性的更详尽的描述。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/77152.html
摘要:反射机制一结合官方通过编写的反射教程,复习一下反射的知识。反射的概念反射是一种在运行时获取以及修改应用行为的一种工具。因为反射需要动态的解析类的信息,相比于非反射使用的方式要慢。反射需要获取一定的运行时权限,在特定的安全环境下不一定存在。 Java反射机制(一) 结合Oracle官方通过JDK8编写的反射教程,复习一下反射的知识。结尾篇补一个小例子。 主要内容 这次博客的主要内容就是简...
摘要:使用反射可以在运行时检视类。类名类修饰符等包信息超类所实现的接口构造函数方法属性注解类中附加了很多信息,你可以在获得一个完整列表。全限定名包含所有的包名。构造函数你可以访问类的构造函数,代码如下构造函数的详细教程在章节。 使用反射可以在运行时检视Java类。检视类通常是使用反射时所做的第一件事情。从类中可以获得下面的信息。 类名 类修饰符(private、public、synchro...
阅读 2580·2021-11-16 11:40
阅读 3382·2021-11-08 13:26
阅读 841·2021-10-28 09:32
阅读 3487·2021-09-13 10:26
阅读 765·2019-08-30 15:55
阅读 747·2019-08-30 15:44
阅读 1879·2019-08-30 15:44
阅读 1725·2019-08-30 13:48