注解与反射

注解

一、什么是注解(Annotation)?

  • 不是程序本身,可以对程序做出解释
  • 可以被其他程序读取

Annotation的格式:

  • 注解是以“@注释名”在代码中存在的,还可以添加一些参数值,例如:@SupperWarnings(value=“unchecked)

Annotation在哪里使用?

  • 可以附加在package,class,method,field等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些数据的访问。

二、内置注解

@Override
定义在java.lang.Override中,此注释只适用于修辞方法,表示一个方法打算重写超类中的另一个方法声明。

@Deprecated
定义在java.lang.Deprecated中,此注释可以用于修辞方法、属性、类,表示不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。

@SuppressWarnings
定义在java.lang.SuppressWarnings中,用来抑制编译时的警告信息。

三、元注解

元注解的作用就是负责注解其他注解,他们被用来提供对其他annotation类型作说明。

  • @Target:用于描述直接的适用范围(即被描述的注解可以用在什么地方)
  • @Retention:表示需要在什么级别保存该注释信息,用于描述注解的生命周期(source<class<runtime)
  • @Document:说明该注解将被包含在javadoc中

四、自定义注解

自定义注解格式:@interface+注释名

​ 注解的参数:参数类型+参数名()

注意:注解中的参数没有顺序,无论先写那个参数都可以

反射

java反射机制提供的功能

  • 在运行时判断任意一个对象所属的类
  • 在运行时构造任意一个类的对象
  • 在运行时判断任意一个类所具有的成员变量分方法
  • 在运行时获取泛型信息
  • 在运行时处理注解

等等

java反射优点和缺点

优点:可以实现动态创建对象和编译,体现出很大的灵活性

缺点:对性能有影响。使用反射基本上是一种解释操作,我们可以告诉JVM,我们希望做什么并且它满足我们什么要求。这类操作总是慢于执行相同的操作。

java内存

java中的内存分为三个部分

  • 存放new的对象和数组
  • 可以被所有的线程共享,不会存放别的对象引用
  • 存放基本变量类型
  • 引用对象的变量(会存放这个引用在堆里面的具体地址)
  1. 方法区
  • 可以被所有的线程共享
  • 包含了所有的class和static变量

上一篇:相关性热图的完美解决方案 -- pheatmap包


下一篇:spring security oauth2