我已经阅读过有关Java思考的内容,但到目前为止,它对我来说一直是一个模糊的概念。有人可以用简短的例子给出一个关于如何在Java中使用反射的简短细节吗?
感谢。
答案 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。它不仅具有反射能力,而且还允许使用普通源语法进行运行时字节码操作!一旦你有了更多的反思(你现在可能已经有了),你会非常欣赏它的美丽。