Java 注解(Annotation)


参考资料


一、Annotation的作用、格式、使用场景

  • 作用
    • 不是程序本身,可以对程序作出解释。(这一 点,跟注释没什么区别)
    • 可以被其他程序(比如: 编译器等)读取。(注解信息处理流程,是注解和注释的重大区别。如果没有注解信息处理流程,则注解毫无意义)
  • 格式:
    • 注解是以“@注释名"在代码中存在的,还可以添加一些参数值,例
      如: @SuppressWarnings(value = "unchecked")
  • 使用场景
    • 可以附加在package, class, method, field等上面,相当于给它们添加
      了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的
      访问。

二、常见注解

  • @Override

    • 子类中重写父类函数
  • @Deprecated

    • 定义在java.lang.Deprecated中
    • 此注释可用于修辞方法、属性、类,表示不建议使用这样的元素,通常是因为它很危险或存在更好的选择。
  • @SuppressWarnings

    • 定义在javalang.SuppressWarnings中
    • 用来抑制编译时的警告信息
  • @Target

    • @Target(value= ElementType. TYPE)

    • 作用:

      • 用于描述注解的使用范围(即:被描述的注解可以用在什么地方)
      饰范围取值ElementType
      ckage包PACKAGE
      接口、枚举、Annotation类型TYPE
      成员(方法、构造方法、成员变量、枚举值)CONSTRUCTOR用于描述构造器
      FIELD:用于描述域
      METHOD:用于描述方法
      参数和本地变量LOCAL_VARIABLE:用于描述局部变量
      PARAMETER:用于描述参数
  • @Retention

    • 作用
    取值RetentionPolicy作用
    SOURCE在源文件中有效(即源文件保留)
    CLASS在class文件中有效(即class保留)
    RUNTIME在运行时有效(即运行时保留);为 RUNTIME 时可以被反射机制读取

三、自定义注解

  • 使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口
  • 要点:
    • @interface用来声明一个注解
      • 格式为: public @interface 注解名{定义体}
    • 其中的每一个方法实际 上是声明了一个配置参数。
      • 方法的名称就是参数的名称
      • 返回值类型就是参数的类型(返回值类型只能是基本类型、Class、 String、
        enum)。
      • 可以通过default来声明参数的默认值。
      • 如果只有一个参数成员, - -般参数名为value
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(value = {ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation01{
    String name() default "";
    int age() default 0;

    String[] favor() default {"象棋", "听歌"};
}

public class MyAnnotation {
    @MyAnnotation01(name = "张三",age = 18, favor = {"攀岩"})
    public void test(){

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值