Java反射——引言

原文地址:http://tutorials.jenkov.com/java-reflection/index.html

*By Jakob Jenkov

  Java的反射机制使得它可以在运行时检查类、接口、字段、方法,而在编译时并不不知道它们的名称。也可以通过反射实例化新的对象,调用方法,get/set字段的值。

  Java的反射机制非常强大而且非常有用。对实例而言,在运行时可以映射对象到数据库中的表,就和 Butterfly Persistence 做的一样。或者,在运行时将脚本中的语句映射到真实对象上的方法调用,就和 Butterfly Container 在解析它的配置脚本时做的一样。

  在互联网上已经有很多关于Java反射的教程了。然而,包括Sun公司提供的在内,大多数Java反射教程都只涉及了Java反射的表面和Java反射机制的可能性。

  本教程将比我之前看到的大多数教程更深层次的触及Java的反射机制。我将解释Java反射的基本知识,包括如何使用数组、注解、泛型、动态代理、类的动态加载和重新加载。也会告诉你该如何做一些比较具体的事情,如读取类的所有getter方法,或者访问类的私有字段和方法。本教程也会澄清一些在运行时哪些泛型信息可用的困惑。有些人声称,所有的泛型信息在运行时都丢失了。这中理解是不对的。

  本教程将基于Java 6介绍Java的反射机制。

  • Java反射例子

  在这里有一个快速使用Java反射的例子展示了使用反射时的样子:

1 Method[] methods = MyObject.class.getMethods();
2 for(Method method : methods){
3 System.out.println("method = " + method.getName());
4 }

  在这个例子中得到了MyObject的Class对象。这个例子通过Class对象获取了MyObject类中的方法列表,并且迭代打印出了各个方法的方法名。
  这一切究竟是如何工作将在整个教程的剩余部分中进一步阐述(在其他文章中)。

  

  • 目录

这是一个本教程到目前为止涵盖的主题列表:

  1. Java反射——引言
  2. Java反射——类
  3. Java反射——构造函数
  4. Java反射——字段
  5. Java反射——方法
  6. Java反射——Getter和Setter
  7. Java反射——私有字段和私有方法
  8. Java反射——注解
  9. Java反射——泛型
  10. Java反射——数组
  11. Java反射——动态代理
  12. Java反射——类的动态加载和重新加载

(敬请期待目录中的下一篇翻译)

 
 
分类: Java
标签: java

Java反射——引言的更多相关文章

  1. 【译】1. Java反射——引言

    原文地址:http://tutorials.jenkov.com/java-reflection/index.html *By Jakob Jenkov Java的反射机制使得它可以在运行时检查类.接 ...

  2. Java 反射机制学习资料

    Java反射——引言 Java反射——Class对象 Java反射——构造函数 Java反射——字段 Java反射——方法 Java反射——Getter和Setter Java反射——私有字段和私有方 ...

  3. 【译】2. Java反射——Class对象

    原文地址:http://tutorials.jenkov.com/java-reflection/classes.html ====================================== ...

  4. 【译】3. Java反射——构造函数

    原文地址:http://tutorials.jenkov.com/java-reflection/constructors.html ================================= ...

  5. 【译】4. Java反射——字段

    原文地址:http://tutorials.jenkov.com/java-reflection/fields.html ======================================= ...

  6. 【译】5. Java反射——方法

    原文地址:http://tutorials.jenkov.com/java-reflection/methods.html ====================================== ...

  7. 【译】6. Java反射——Getter和Setter

    原文地址:http://tutorials.jenkov.com/java-reflection/getters-setters.html ============================== ...

  8. 【译】7. Java反射——私有字段和私有方法

    原文地址:http://tutorials.jenkov.com/java-reflection/private-fields-and-methods.html =================== ...

  9. 【译】8. Java反射——注解

    原文地址:http://tutorials.jenkov.com/java-reflection/annotations.html ================================== ...

随机推荐

  1. java_maven_linux_windows下项目运行jar

    我才用的是eclipse自带的export功能,暂时没把maven的打包插件研究清楚 导出jar包后,需要用解压缩打开,把配置文件copy到压缩包的内的顶级目录 保存 写 bat 脚本 @author ...

  2. 拷贝构造函数,深拷贝,大约delete和default相关业务,explicit,给定初始类,构造函数和析构函数,成员函数和内联函数,关于记忆储存,默认参数,静态功能和正常功能,const功能,朋友

     1.拷贝构造 //拷贝构造的规则,有两种方式实现初始化. //1.一个是通过在后面:a(x),b(y)的方式实现初始化. //2.另外一种初始化的方式是直接在构造方法里面实现初始化. 案比例如以 ...

  3. 教你一步一步部署.net免费空间OpenShift系列之二------创建应用

    接上回书,注册完毕后需要在Openshift上创建一个应用空间,如如何创建空间呢,Openshift本身是不直接支持Mono来部署ASP.Net程序的,需要借助openshift-community- ...

  4. 枚举 UIButton补充

    一.URL 1.什么是URL? URL是某个资源的唯一路径,通过这个路径就能访问对应的资源 2.URL的组成 协议头://全路径 * 协议头就代表资源的类型,比如http代表网络服务器资源,ftp代表 ...

  5. C# 通过ImportNode AppendChild方法合并XmlDocument,XML转为DataTable

    var doc1 = new XmlDocument(); var doc2 = new XmlDocument(); XmlNode root1 = doc1.DocumentElement; do ...

  6. c语言下多线程

    原文:c语言下多线程 [问题]创建了10个线程,10个线程公用一个线程体,创建如下: int t1=0,t2=1,t3=2,t4=3,t5=4,t6=5,t7=6,t8=7,t9=8,t10=9; i ...

  7. JavaScript-RegExp对象仅仅能使用一次

    下面的代码,是測试从字符串中识别出年月日,能够看到创建的rYMD这个RegExp对象运行了一次后,又运行了一次. var DateStr = "2014-9-8"; var rYM ...

  8. 退出手机QQ依旧显示在线

    老婆说明明看到你手机QQ在线,怎么发信息不回复?这让我非常是冤枉,我明明退出了啊! 晚上宝宝睡觉后,我们一起来研究,发现了当中的秘密,原来仅仅要选择了"退出后仍接受消息通知"这个选 ...

  9. 一淘搜索网页抓取系统的分析与实现(3)—scrapy+webkit & mysql+django

    图 scrapy+webkit: 如结构图③. scrapy不能实现对javascript的处理,所以须要webkit解决问题.开源的解决方式能够选择scrapinghub的scrapyjs或者功能更 ...

  10. 有趣的游戏:Google XSS Game

    Google最近出了一XSS游戏: https://xss-game.appspot.com/ 我这个菜鸟看提示,花了两三个小时才全过了.. 这个游戏的规则是仅仅要在攻击网页上弹出alert窗体就能够 ...