注解
概述
1、可以被编译或运行,不影响程序逻辑,相当于嵌入代码的补充信息
2、JDK 内置的基本注解类型
(1)@Override
(2)@Deprecated
(3)@SuppressWarnings
3、@interface 不是代表接口 interface,而是表示注解
@Override
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
1、编译器会进行语法校验,检查该方法是否重写父类方法:有重写,编译通过;无重写,编译错误
2、@Target(ElementType.METHOD) 表示只能修饰方法
@Deprecated
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
public @interface Deprecated {
}
1、表示某个程序的元素已过时
2、@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE}) 表示可以修饰构造器、字段、局部变量、方法、包、参数、类
3、过时不代表不能使用,而是不推荐使用
4、可以做到新旧版本兼容、过渡
@SuppressWarnings
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
String[] value();
}
1、可以抑制编译器警告
2、@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE}) 表示可以修饰类、字段、方法、参数、构造器、局部变量,作用范围与放置位置有关
3、String[] value(); 存放需要抑制的警告类型,以 String 数组形式传入
@SuppressWarnings({"警告类型1", "警告类型2"})
4、IDEA 可以指定位置生成
元注解
1、修饰注解的注解
2、种类
(1)@Retention:指定注解的作用范围(注解可以保存多久)
(2)@Target:指定注解的使用范围,即可以在哪些位置使用
(3)@Documented:指定该注解是否会在 Javadoc 中体现
(4)@Inherited:允许子类继承父类注解
(5)@Repeatable:可以多次应用于同一个声明(Java8)
3、@Retention
(1)只能修饰注解,指定该注解可以保留多长时间
(2)包含一个 RetentionPolicy 类型的 value,必须为该 value 指定值
4、RetentionPolicy
(1)是一个 enum 枚举类
(2)RetentionPolicy.SOURCE:编译器使用后,直接丢弃这种策略的注解
(3)RetentionPolicy.CLASS:编译器把注解记录在 .class 文件,运行 java 程序,JVM 不会保留该注释,这是默认值
(4)RetentionPolicy.RUNTIME:编译器把注解记录在 .class 文件,运行 java 程序,JVM 会保留该注释,程序可以通过反射获取该注解
5、@Target 的 ElementType 参数
(1)CONSTRUCTOR:构造器声明
(2)FIELD:字段声明(包括枚举常量)
(3)LOCAL_VARIABLE:本地变量声明
(4)METHOD:方法声明
(5)PACKAGE:包声明
(6)PARAMETRE:参数声明
(7)TYPE:类、接口(包括注解类型)或枚举的声明
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战