Java注解的作用,使用,自定义

注解是什么

注解是描述Java代码的代码,它能够被编译器解析,注解处理工具在运行时也能够解析注解。用来标识代码,提供额外的信息做特殊处理。 比如:

@Override
    public String toString(){
        return "";
    }

@Override 是一个常用的注解,它标识我们重写了某个方法。

注解的作用

还是@Override注解,Ctrl+左键点击,查看源代码。

package java.lang;
import java.lang.annotation.*;

/**
 * Indicates that a method declaration is intended to override a
 * method declaration in a supertype. If a method is annotated with
 * this annotation type compilers are required to generate an error
 * message unless at least one of the following conditions hold:
 *
 * <ul><li>
 * The method does override or implement a method declared in a
 * supertype.
 * </li><li>
 * The method has a signature that is override-equivalent to that of
 * any public method declared in {@linkplain Object}.
 * </li></ul>
 *
 * @author  Peter von der Ah&eacute;
 * @author  Joshua Bloch
 * @jls 9.6.1.4 @Override
 * @since 1.5
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}

注释的大致意思是当一个方法被这个注解标记的时候要满足:

实现了或者重写了父类的方法

实现或者重写了Object类的方法

Java提供的注解

  • 元注解 在@override的源码中有
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}

@Target和@Retention就是元注解。元注解即用来描述注解的注解,只能应用于对方法进行注解。

 在JDK源码中注解包内容如图

image

类之间的关系如图


 @Document、@Target、@Retention和@inherrited就是元注解

  1. Documented 当一个注解类型被@Documented元注解所描述时,那么无论在哪里使用这个注解,都会被Javadoc工具文档化

  2. Inherited型是自动继承的。具体解释如下:若一个注解类型被Inherited元注解所修饰,则当用户在一个类声明中查询该注解类型时,若发现这个类声明中不包含这个注解类型,则会自动在这个类的父类中查询相应的注解类型,这个过程会被重复,直到该注解类型被找到或是查找完了Object类还未找到

  3. Retention 我们在上面已经见到个这个元注解,它表示一个注解类型会被保留到什么时候,比如以下代码表示Developer注解会被保留到运行时:

  4. Target 这个元注解说明了被修饰的注解的应用范围,也就是被修饰的注解可以用来注解哪些程序元素.

自定义注解

  1. 注解类型通过”@interface“关键字定义的
  2. 在”注解体“中,所有的方法均没有方法体且只允许public和abstract这两种修饰符号(不加修饰符缺省为public),注解方法不允许有throws子句;
  3. 注解方法的返回值只能为以下几种:原始数据类型), String, Class, 枚举类型, 注解和它们的一维数组,可以为方法指定默认返回值。
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface myAnnotation {
    String[] value();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值