首页 > 编程语言 >java 注解

java 注解

时间:2024-07-25 13:42:53浏览次数:13  
标签:java 抑制 相关 注解 警告 ElementType MyAnnotation

内置注解

注解 作用 描述
@Override 用于标记方法覆盖父类的方法
@Deprecated 标记已过时的方法或类,建议不再使用
@SafeVarargs 用于抑制参数安全性警告 注解只能用于静态方法或 final 实例方法
@FunctionalInterface 标记接口为函数式接口 只有一个抽象方法的接口
@SuppressWarnings 抑制编译器警告 all,抑制所有警告
boxing,抑制与封装/拆装作业相关的警告
cast,抑制与强制转型作业相关的警告
dep-ann,抑制与淘汰注释相关的警告
deprecation,抑制与淘汰的相关警告
fallthrough,抑制与switch陈述式中遗漏break相关的警告
finally,抑制与未传回finally区块相关的警告
hiding,抑制与隐藏变数的区域变数相关的警告
incomplete-switch,抑制与switch陈述式(enum case)中遗漏项目相关的警告
javadoc,抑制与javadoc相关的警告
nls,抑制与非nls字串文字相关的警告
null,抑制与空值分析相关的警告
rawtypes,抑制与使用raw类型相关的警告
resource,抑制与使用Closeable类型的资源相关的警告
restriction,抑制与使用不建议或禁止参照相关的警告
serial,抑制与可序列化的类别遗漏serialVersionUID栏位相关的警告
static-access,抑制与静态存取不正确相关的警告
static-method,抑制与可能宣告为static的方法相关的警告
super,抑制与置换方法相关但不含super呼叫的警告
synthetic-access,抑制与内部类别的存取未最佳化相关的警告
sync-override,抑制因为置换同步方法而遗漏同步化的警告
unchecked,抑制与未检查的作业相关的警告
unqualified-field-access,抑制与栏位存取不合格相关的警告
unused,抑制与未用的程式码及停用的程式码相关的警告
@Target 指定注解可以应用的程序元素类型 ElementType.TYPE, 类、接口、枚举类
ElementType.FIELD, 成员变量(包括:枚举常量)
ElementType.METHOD, 成员方法
ElementType.PARAMETER, 方法参数
ElementType.CONSTRUCTOR, 构造方法
ElementType.LOCAL_VARIABLE, 局部变量
ElementType.ANNOTATION_TYPE, 注解类
ElementType.PACKAGE, 可用于修饰:包
ElementType.TYPE_PARAMETER, 类型参数,JDK 1.8 新增
ElementType.TYPE_USE 使用类型的任何地方,JDK 1.8 新增
@Retention 指定注解的保留策略,即在何时有效 RetentionPolicy.SOURCE, 源文件保留(java 文件)
RetentionPolicy.CLASS, 编译期保留,默认值(class 文件)
RetentionPolicy.RUNTIME 运行期保留(运行时也存在)
@Inherited 指定注解是否可以被子类继承
@Documented 指定注解将被包含在 Javadoc 中

自定义注解

  1. 属性可以是 8 中基本类型、String、Class、枚举、注解,或这些类型的一维数组
  2. 属性定义规则:类型 属性名() default 默认值,默认值可选
  3. 数组属性用大括号赋值,逗号隔开
  4. 如果不写属性名,默认赋值给 value,前提是注解有 value 这个属性
@Target(value = {ElementType.METHOD})// 只能标注在方法上
@Retention(RetentionPolicy.RUNTIME)// 运行时有效
@Documented 
@Inherited 
@interface MyAnnotation {
    String name() default "";
    int age() default 0;
    String[] schools(); // String 类型数组
}

// 使用注解
public class Student{
    @MyAnnotation(age=18, schools={"小学","中学","大学"})
    public void testAnno(){}
}

注解解析

Class<Student> clazz = Student.class;

// 是否有 MyAnnotation 注解,存在则返回 true,否则返回 false,@Retention 不能是 RetentionPolicy.RUNTIME
clazz.isAnnotationPresent(MyAnnotation.class);

// 获取 MyAnnotation 注解(继承来的也能获取)
MyAnnotation annotation1 = clazz.getAnnotation(MyAnnotation.class);

// 获取 MyAnnotation 注解(不能获取继承来的)
MyAnnotation annotation2 = clazz.getDeclaredAnnotation(MyAnnotation.class);

// 获取所有注解
List<MyAnnotation> annotationList = clazz.getAnnotations();

// 打印注解各项值
System.out.println("name:" + annotation.name());
System.out.println("age:" + annotation.age());
System.out.println("schools:" + String.join(", ", annotation.schools()));

标签:java,抑制,相关,注解,警告,ElementType,MyAnnotation
From: https://www.cnblogs.com/cyrushuang/p/18322816

相关文章

  • java学习4
    我感觉我这一个月学下来就是在闭门造车,网上找的学习路线,以及一些学习建议,或者说抄项目去学习就好像自己在迷雾中探索一样看不清方向这周我和上周一样,打算通过从网上抄项目进行结构化学习。但实际上不过是把代码抄过来而已如果没有人去指导,没有人告诉我,这个代码为什么要这样写,什......
  • Java毕业设计:基于Springboot+vue的电影院管理系统
    【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享......
  • Java毕业设计:基于SpringBoot+Vue的养老院系统
    一、选题背景意义......
  • JavaWeb(7) DOM编程
    目录一、什么是DOM编程二、获取页面元素的API1.在整个文档范围内查找元素结点2.在具体元素节点范围内查找子节点3.查找指定子元素节点的父节点4.查找指定元素节点的兄弟节点5.整体代码演示三、操作元素属性值API1.属性操作2.内部文本操作3.整体代码演示 四、增......
  • Java编程指南:高级技巧解析 - Excel单元格样式的编程设置
    最新技术资源(建议收藏)https://www.grapecity.com.cn/resources/前言在Java开发中,处理Excel文件是一项常见的任务。在处理Excel文件时,经常需要对单元格进行样式设置,以满足特定的需求和美化要求,通过使用Java中的相关库和API,我们可以轻松地操作Excel文件并设置单元格的样式。在......
  • JAVA集合 day7.24
    一.Collections类1.1Collections常用功能常用方法:publicstaticvoidshuffle(List<?>list):打乱集合顺序。publicstaticvoidsort(Listlist):将集合中元素按照默认规则排序。publicstaticvoidsort(Listlist,Comparator<?superT>com):将集合中元素......
  • Java初始
    Java初始1.JDK,JRE和JVM:定义:JDK(JavaDevelopmentKit)定义:JDK是Java开发工具包,是Java开发者用于编写、编译、调试和运行Java程序的核心组件。包含内容:JDK包含了Java编译器(javac)、Java运行时环境(JRE)、Java开发工具(如调试器、打包工具等)以及Java标准库等。用途:主要用于Java程......
  • Java————链表
    目录前言:1.链表的概念2.链表的结构2.1带头的和不带头的2.2单向和双向2.3循环和非循环3.链表的实现3.1双向不带头不循环链表:3.2单向不带头不循环链表:4.LinkedList的使用4.1什么是LinkedList4.2LinkedList的使用5.LinkedList的遍历5.1foreach遍历5.2使用迭代器遍......
  • 都4202年了为什么大厂程序员还在用java8?
    Java8新特性文章目录Java8新特性接口的默认方法(DefaultMethodsforInterfaces)Lambda表达式(Lambdaexpressions)函数式接口(FunctionalInterfaces)方法和构造函数引用(MethodandConstructorReferences)Lambda表达式作用域(LambdaScopes)访问局部变量访问字......
  • @RestController注解
    1.引言在现代的JavaWeb开发中,Spring框架因其简洁、高效和强大的功能而受到广泛欢迎。SpringMVC是Spring框架的一个重要组成部分,用于构建Web应用程序。@RestController注解是SpringMVC提供的一个关键注解,用于简化RESTfulWeb服务的开发。本文将详细讲解@RestController......