java注解简要笔记

参考文章
https://blog.csdn.net/briblue/article/details/73824058

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnnotation {
	
	int id();
	
	String msg();

}

@TestAnnotation(id=3,msg="hello annotation")
public class Test {

}

Annotation 中文译过来就是注解、标释

注解如同标签,程序中给人看到提示信息叫注释,给程序看的提示信息叫做注解

带着问题思考

  • 基本使用
  • 为啥会出现这个知识点
  • 背后的调用原理是什么
  • 如何像吃面条一样轻松运用这个知识点

语法

用@interface关键字修饰

public @interface TestAnnotation {
		String name();  
		//String name2() default "xxx";
}

使用

@TestAnnotation
public class Test {
}

关键知识点

元注解是可以注解到注解上的注解,@Retention、@Target、@Documented(作用于文档)、@Inherited(可被继承)、@Repeatable(可重复的,1.8引入属新特性) 5 种。

  • @Retension
    RetentionPolicy.SOURCE 注解只在源码阶段保留,在编译器进行编译时它将被丢弃忽视。
    RetentionPolicy.CLASS 注解只被保留到编译进行的时候,它并不会被加载到 JVM 中。
    RetentionPolicy.RUNTIME 注解可以保留到程序运行的时候,它会被加载进入到 JVM 中,所以在程序运行时可以获取到它们。

  • @Target
    ElementType.ANNOTATION_TYPE 可以给一个注解进行注解
    ElementType.CONSTRUCTOR 可以给构造方法进行注解
    ElementType.FIELD 可以给属性进行注解
    ElementType.LOCAL_VARIABLE 可以给局部变量进行注解
    ElementType.METHOD 可以给方法进行注解
    ElementType.PACKAGE 可以给一个包进行注解
    ElementType.PARAMETER 可以给一个方法内的参数进行注解
    ElementType.TYPE 可以给一个类型进行注解,比如类、接口、枚举

预置的注解

  • @Deprecated
  • @Override
  • @SuppressWarnings
  • @SafeVarargs
  • @FunctionalInterface

反射注解

  • T getAnnotation(Class annotationClass)
    如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。

  • Annotation[] getAnnotations()
    返回此元素上存在的所有注释。

  • Annotation[] getDeclaredAnnotations()
    返回直接存在于此元素上的所有注释。

  • boolean isAnnotationPresent(Class<? extends Annotation>
    annotationClass)
    如果指定类型的注释存在于此元素上,则返回 true,否则返回 false。
    获取注解上的属性?获取到注解对象后,就像调用方法一样后去注解的属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值