java入门,@interface

一、前言

  在看项目代码的时候,经常会看到@XXXX这样的写法,有的有参数、有的没有参数。

java.lang.annotation.Annotation 接口中有这么一句话,用来描述:所有的注解类型都继承自这个普通的接口(Annotation),注解的本质就是一个继承了 Annotation(注解) 接口的接口。

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PARAMETER)
public @interface Param {
  /**
   * Returns the parameter name.
   *
   * @return the parameter name
   */
  String value();
}

 二、怎么字定义注解

1、元注解

@Target:注解的作用目标
@Retention:注解的生命周期
@Documented:注解是否应当被包含在 JavaDoc 文档中
@Inherited:是否允许子类继承该注解

@Target:用于指明被修饰的注解最终可以作用的目标是谁,也就是指明,你的注解到底是用来修饰方法的?修饰类的?还是用来修饰字段属性的。语法如下: 

@Target(value = {ElementType.METHOD})

 @Retention: 注解指定了被修饰的注解的生命周期。语法如下:

@Retention(value = RetentionPolicy.RUNTIME)

 

  • @Documented 注解修饰的注解,当我们执行 JavaDoc 文档打包时会被保存进 doc 文档,反之将在打包时丢弃。
  • @Inherited 注解修饰的注解是具有可继承性的,也就说我们的注解修饰了一个类,而该类的子类将自动继承父类的该注解。

2、定义个日志注解

​
import java.lang.annotation.ElementType; 
import java.lang.annotation.Retention; 
import java.lang.annotation.RetentionPolicy; 
import java.lang.annotation.Target; 
/** * 接口日志注解 * @see InterfaceLogAspect * */
 @Retention(RetentionPolicy.RUNTIME) 
@Target(ElementType.METHOD) 
public @interface InterfaceLog { String value() default ""; }

​

 

你可能感兴趣的:(java,开发语言)