首页 > 编程语言 > 详细

Java注解/自定义注解

时间:2021-04-08 01:04:30      阅读:29      评论:0      收藏:0      [点我收藏+]

Annotation 翻译过来就是注解、标注的意思,注解就是代码中的特殊标记,这些标记可以在编译、类加载、运行时被读取并执行相应的处理。在工作学习中Java注解是一个很常用和实用的知识点。

  因为在学习或者工作中使用注解的场景很多,但是去了解的却很少很少,注解同class类,interface接口一样,注解也属于一种类型。以下主要介绍Java的基本注解、自定义注解和元注解。

1、Java基本注解(java.lang包下的5个基本注解)

@Overried(重写注解)

重写注解:在子类重写父类方法时,方法上标记@Override注解表示重写父类方法,此注解只能在方法上标注。

@Deprecated(过时注解)

过时注解:通常用来标记过时的方法、类、字段等,可以使用,但是不建议使用,一般有更优的替代方案来替代它。

@SuppressWarnings(抑制编译器警告注解)

抑制编译器警告注解:可以使用这个注解来让编译器不给予代码警告。

@SafeVarargs

@SafeVarargs注解也是用来抑制编译器警告的注解,不过场景为发生堆污染时编译器会给予警告,可以通过这个注解让编译器不给予代码警告。堆污染:比如将不带泛型的集合赋值给带泛型的集合,这种情况就很容易发生堆污染。

@FunctionalInterface(函数式接口注解)

该注解只能标记在有且只有一个抽象方法的接口上,jdk8接口中的静态方法和default修饰的默认方法都不算抽象方法,加上此注解能够让编译器更好的检查错误。

2、自定义注解(Annotation)

Annotation通过@interface关键字进行定义:

public @interface TestAnnotation {
}

如上就自定义了一个@TestAnnotation注解,可以看见跟修饰接口的关键字interface多了一个@符号。自定义注解可以有成员变量,成员变量只能是String、枚举、double等类型的变量。

3、注解的使用

将注解标注在类上、方法上或者字段上使用:

@TestAnnotation
public class UserController {
  @TestAnnotation
  public String getUser(){
  return "GET_USER";
  }
}

当这样直接运行代码时会出现异常,所以需要Java的元注解来修饰描述注解:如下

JDK的元注解:

1)@Retention(只能用于修饰其它Annotation,用于指定被修饰的Annotation被保留时间)

@Retention注解有一个属性 value 为RetentionPolicy类型(枚举类型),RetentionPolicy枚举有三个值:SOURCE(编译)、CLASS(加载)、RUNTIME(运行)

2)@Target(只能用于修饰其它Annotation,用于执行被修饰的Annotation用于修饰那些程序单元)

@Target注解有一个属性value为ElementType类型的数组(枚举类型数组),ElementType枚举有:TYPE(类、接口、注解类型、枚举声明、自定义注解)、FIELD(属性、字段、枚举常量)、METHOD(方法)、CONSTRUCTOR(构造方法)、PARAMTER(参数)、LOCAL_VARIABLE(局部变量)、ANNOTATION_TYPE(注解类型)、PACKAGE(包)、TYPE_PARAMTERTYPY_USE

3)@Documented(用于执行被该Annotation修饰的Annotation类将被javadoc工具提取成文档)

4)@Inherited(用于执行被修饰的Annotation类具有继承性)

当自定义一个注解并使用@Inherited注解修饰时,被自定义注解修饰的类被继承时,子类也自动有该自定义注解。

更多的注解详细使用就不写了。

Java注解/自定义注解

原文:https://www.cnblogs.com/kjs-bk/p/14630069.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!