Java 反射教程

Java反射使得可以在运行时检查类,接口,字段和方法,而无需在编译时知道类名,方法等。也可以实例化新对象,调用方法并使用反射来获取/设置字段值。

Java反射是相当强大的,可以是非常有用的。例如,Java Reflection可用于将JSON文件中的属性映射到Java对象中的getter / setter方法,如Jackson,GSON,Boon等。或者,Reflection可用于将JDBC ResultSet的列名映射到Java对象中的getter / setter方法。

本教程将深入Java反射。它将解释Java反射的基础知识,包括如何处理数组,注释,泛型和动态代理,以及动态类加载和重载。

它还将向您展示如何执行更具体的Java反射任务,例如读取类的所有getter方法,或者访问类的私有字段和方法。

这个Java反射教程也将清除一些关于什么泛型信息在运行时可用的混淆。有些人声称所有的仿制药信息在运行时都会丢失。这不是真的。
本教程介绍Java 8中的Java反射版本。

Java反射的例子

这是一个Java反射示例向您展示使用反射是什么样子:

Method[] methods = MyObject.class.getMethods();

for(Method method : methods){
    System.out.println("method = " + method.getName());
}

本示例从名为MyObject的类中获取Class对象。 使用类对象的例子获取该类中的方法的列表,迭代方法并打印出他们的名字。

详细对类的使用,请看后续本系列教程。

Java类对象

当使用Java反射时,起始点通常是一些Class对象,它们表示您想要通过反射来检查的某个Java类。 例如,要获得一个名为MyObject的类的Class对象,你可以写:

Class myObjectClass = MyObject.class;

现在您有一个MyObject类的Class对象的引用。

详细对方法的使用,请看后续本系列教程。Java反射 - 类对象

Methods and Fields 方法和字段

一旦你引用了表示某个类的Class对象,就可以访问该类的方法和字段。 下面是一个访问Java类的方法和字段的例子:

Class myObjectClass = MyObject.class;

Method[] methods = myObjectClass.getMethods();

Field[] fields   = myObjectClass.getFields();

一旦你有一个类的方法和领域的引用,你可以开始检查他们。 你可以获得方法和字段名称,他们采取什么参数等。你甚至可以通过这些方法和字段反射对象调用方法和获取/设置字段值。

这里只是给大家概括反射的大概功能。详情请看后文。Java反射 - 方法 Methods
Java反射 - 字段

项目代码:github链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java的反射机制,使得我们可以方便的在运行时检视:类、接口、变量和方法,而不需要在编译时期就知道类或方法等的名字...
    SHUTUP阅读 681评论 0 2
  • 整体Retrofit内容如下: 1、Retrofit解析1之前哨站——理解RESTful 2、Retrofit解析...
    隔壁老李头阅读 4,650评论 2 12
  • 今天起床之后,就忙忙碌碌地开始完成各项任务。 听书,家务,学习,出门,休闲娱乐。 自认为忙起来感觉真好。 忙起来 ...
    世俗凡人阅读 260评论 4 2
  • 晚上,看到微信家庭群里,小姑的一条消息"今天是哥哥的生日 祝哥哥生日快乐 "随后发了一个蛋糕的表情,不一会大姑和...
    qazhgfhj阅读 325评论 0 0
  • 【粉丝求助】相识六年 在一起四年 分开两年 所有的第一次都给了他 就算每个晚上都哭的声嘶力竭 可直到分手两年后的今...
    可爱小郭郭阅读 132评论 0 0