【Java】注解的使用

1.注解是什么

这个注解表示该方法是重写的
image

  • jdk 5.0 新增的功能。
  • 注解:Annotation,代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,通过使用注解,可以在源文件中嵌入一些补充信息。
  • 框架 = 注解 + 反射机制 + 设计模式。
  • JavaSE中注解一般用来标记过时的功能,忽略警告等;JavaEE/Android中注解可以用来配置应用程序的切面,代替JavaEE旧版中所遗留的繁冗代码和XML配置等。

2.注解的使用

  • 生成doc文档
  • 编译时格式检查(jdk内置的)
    • @Override:重写父类方法。
    • @Deprecated:所修饰的元素(类、方法等)已过时。
    • @SuppressWarnings(""):抑制编译警告(null警告、拆箱装箱警告等)
  • 跟踪代码依赖性,实现替代配置文件(@Controller、@Resource)
@SuppressWarnings("all")
public class AnnoTest01 {
@Override
public String toString() {
return "AnnoTest01{}";
}
@Deprecated
public void displayTV(){
//过时了,不推荐使用,但可以使用
}
public void displayAll(){
//更好的方法
}
}

3.元注解

对现有的注解进行解释说明的注解
image

jdk提供的4种元注解

  • @Retention:指定修饰注解的生命周期,该注解被保留到哪个阶段。
    • SOURCE:代码阶段有效
    • CLASS:会被保留到字节码阶段
    • RUNTIME:会被保留到运行阶段
  • @Target:指定修饰注解能用于修饰哪些程序元素(方法、属性、构造器...)。
  • @Documented:指定修饰的注解在被javadoc解析时保留下来。
  • @Inherited:指定修饰的注解具有继承性。

4.自定义注解

  • 使用@interface修饰。
  • 内部定义成员,通常使用value表示,可以指定默认值。
  • 没有成员则表示一个标识作用。
  • 通常都会指明两个元注解@Retention、@Target

自定义注解名字叫Hello

@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
public @interface Hello {
String userName();
int age() default 10;
}

使用

@Hello(userName = "张三",age = 50)
public class Person {
}

5.通过反射获取注解信息

只有声明为RUNTIME生命周期的注解,才能通过反射获取

6.jdk 8中注解的新特性

  • 可重复注解:@Repeatable
  • 类型注解:@Target中新增类型
    • ElementType.TYPE_PARAMETER:表示该注解能卸载类型变量的声明语句中(如泛型声明)。
    • ElementType.TYPE_USE:表示该注解能写在使用类型的任何语句中。

想重复使用@Hello注解,自定义两个注解

@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Repeatable(World.class)
public @interface Hello {
String userName();
int age() default 10;
}
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
public @interface World {
Hello[] value();
}

使用

public class Person {
@Hello(userName = "张三",age = 18)
@Hello(userName = "李四",age = 20)
public void who(){
}
}

参考链接
1.注解@Repeatable详解

posted @   植树chen  阅读(120)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示