注解
注解
注解是jdk1.5引入的技术
1.范围
TYPE, 可用于class,interface,Annotation,enum上面
FIELD, 属性上面,即成员变量
METHOD, 方法上面
PARAMETER, 方法的参数前面,比如test(@Nullable String name) 允许这个参数为空
ANNOTATION_TYPE, 注解类型上面
2.元注解
元注解是在我们自定义注解的时候用的,java中就只有四个
-
@Target,用于描述注解的使用范围
-
@Retention,保留策略,决定是保留到源代码中 (SOURCE,在编译完,成为class文件的时候,注解被遗弃)/ Class文件中(CLASS,在class文件中有,但当jvm加载这个class文件之后,就没有了)/ 加载到内存中(RUNTIME,一直存在)
拿SOURCE举个栗子,它对应着编译阶段,@Override用的就是它,所以在编译的时候就会检查此方法是不是重写的
注意,若要用到反射技术,则必须使用RUNTIME,因为它在运行阶段有效
-
@Documented, 使用了该元注解的注解,该注解的信息将会被生成到API帮助文档中
比如我定义了一个注解
@Target(ElementType.METHOD)
@Documented
public @interface MyAnnotation{
String[] value();
int a();
}
然后使用这个注解,该传参的传参
public class AnnotationTest {
@MyAnnotation(value ="tom",a=10)
public void sayHello(){
System.out.println("Hello World!");
}
}
然后利用idea或eclipse生成该java文件的javadoc(就是API帮助文档),如下,注解的信息就出现在了API中
- Inherited, 会被继承, 假如某父类上使用了该注解,那么它的子类也默认使用了该注解
这一路,灯火通明
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现