Java中的注解

#什么是注解
注解Annotation,从JDK5.0开始引入,注解可以被其他程序读取(如编译器等)
注解在实际应用中其实已经接触过很多,比如最常见的重写的注解@OverRide,该注解有着检查和约束的作用

public class Test extends Object{
    @Override
    public String toString(){
        return super.toString();
    }
}

注解的格式: “@注释名”,还可以加一些参数值,eg:

@SuppressWarnings(value = "unchecked")

内置注解

最常见的三个内置注解

  1. @OverRide, 表示一个方法声明打算重写超类的方法;
  2. @Deprecated, 表示不鼓励程序员使用这些元素(可以是类、方法、属性),通常是因为他很危险或者存在更好的选择
  3. @SuppressWarnings, 表示抑制编译时的警告信息,这个注解可以使用规定好的参数

以第一个注解为例,它的内部定义如下

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {

}

元注解

元注解的作用是负责其他注解的注解,Java中定义了4个元注解meta-Annotation,都可以在java.lang.annontation中找到。

  1. @Target: 用于描述注解的使用范围
  2. @Retention: 表示需要在什么级别保存该信息
  3. @Document: 说明该注解的解释保存在javadoc中
  4. @Inherited: 说明子类可以继承父类中的该注解

下面仿照上面注解的例子,自己定义一个简单的注解

//表示注解可以用在哪些地方
//Value是一个枚举类型,具体可以打开源码查看
@Target(ElementType.METHOD)
//表示注解在那些地方有效
//runtime > class > source
@Retention(RetentionPolicy.SOURCE)
//表示我们的注解是否生成在javadoc中
@Documented
//子类可以继承父类的注解
@Inherited    
@interface MyAnnotation{

}

自定义注解

在定义一个注解时,使用@Interface时,自动继承了java.lang.Annotation接口

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.SOURCE)
@interface MyAnnotation2{
    //注解的参数: 参数类型 + 参数名();
    //使用default参数设置默认参数
    String name() default "";
    int age() default 0;
    int id() default -1; //默认值为-1,代表不存在
    
    String[] schools() default "school";
    
}

定义一个注解时,有一个不成文的规定,注解中只有一个参数,并命名为value时,可以忽略参数名,在注解中直接写参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值