注解

注解

​ 注解是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, 会被继承, 假如某父类上使用了该注解,那么它的子类也默认使用了该注解
posted @   朱在春  阅读(29)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示