Java Annotation 注解与反射

店铺:https://shop58616120.taobao.com

一、Java 动态性

动态语言:程序运行时,可以改变程序结构或变量类型。例如Python,Ruby,JavaScript等

注释1:C、C++、Java不是动态语言

二、反射机制 reflection

可以在运行时加载、探知、使用编译期间完全未知的类。

    例如 Class cls = Class.forName("classPath");

           Class cls = String.class;

           Class cls = Obj.getClass(); 

程序在运行状态中,可以动态加载一个只有名称的类,对于任意一个已加载的类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。加载完类之后,在堆内存中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。

反射的作用

  • 动态加载类、动态获取类的信息(属性、方法、构造器)

  • 动态构造对象

  • 动态调用类和对象的任意方法、构造器

  • 动态调用和处理属性

  • 获取泛型信息

  • 处理注释

注释1:ORM(Object Relationship Mapping)

  • 类与表结构对应

  • 属性和字段对应

  • 对象和记录对应

注释2:使用注解完成类与表结构的映射关系,定义注解处理流程处理。

注释3:反射机制性能问题 setAccessible 或 cglib/javaassist字节码操作

注释4:反射操作泛型,ParameterizedType、TypeVariable等

评论

© Saoirse | Powered by LOFTER