需要在反射时弄脏我的手

时间:2010-04-23 14:50:03

标签: java reflection

我已经阅读过有关Java思考的内容,但到目前为止,它对我来说一直是一个模糊的概念。有人可以用简短的例子给出一个关于如何在Java中使用反射的简短细节吗?

感谢。

4 个答案:

答案 0 :(得分:2)

它主要用于以编程方式访问类/方法/字段(即在运行时而不是编译时)。正确使用反射的真实世界API是ORM,如Hibernate / JPA

您可以在这里找到Sun tutorial on the subject(点击底部的下一步链接,通过它进行分页)。

答案 1 :(得分:2)

我猜the article 'Using Java Reflection' found on sun.com可能是一个很好的起点。

答案 2 :(得分:2)

  

我已阅读有关Java Reflections的内容   到目前为止,这是一个模糊的概念   对我来说。

以下是java中的快速反思:

结构内省。基本反射处理运行时对象的内省。这意味着您可以在运行时以编程方式学习对象和类的结构,例如获取对象的类,列出类的方法,列出类中定义的字段等。

反思性调用和实例化。使用反射,您可以在运行时调用一个方法,该方法在编译时未定义,例如在对象O上调用名为M的方法,其中M在配置文件中读取。您还可以在编译时不知道类的情况下动态实例化对象。

<强>注解即可。然后,您可以在元级别中向上移动一级,并使用注释。 Annotations describe other elements,例如类,方法和字段。许多框架都依赖于此。

动态代理Dynamic proxy可以在运行时生成。在这种情况下,如果您在运行时动态创建类,则非常类似。小心使用,但在某些情况下确实方便和强大。

我猜你会从结构内省开始。在其他答案中有指向教程的链接,但我希望这能让您了解还可以做些什么。

答案 3 :(得分:0)

值得一提的是Javassist。它不仅具有反射能力,而且还允许使用普通源语法进行运行时字节码操作!一旦你有了更多的反思(你现在可能已经有了),你会非常欣赏它的美丽。