什么是注解

注解,和comment(注释)很像,前者是给机器看,后者是给人看的。

元注解的作用就是负责解释其他注解。java定义了4个标准(meta-annotation)

  • Target 用于描述注解的使用范围(字段,方法,类名)
  • Retention (注释的生命周期, 源代码 < class文件 < 运行期(runtime,常用)
  • Documented (是否将该注解包含在javadoc中
  • inherited 说明子类继承父类?

在@Target中传入一个参数 value = {enum ElementType},在ElementType中有8个枚举,来觉得这个自定义注解能用在哪些地方。比如value中添加Method,则就用在方法上,要是没有添加 type 则不能添加到类名。

操作如下:

import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
@Myann //这里则会报错 因为没有添加ElementType.TYPE
public class Myannotation {

    @Myann
    public void test(){

    }
}

// 照猫画虎的自定义注解即可。
@Target(value = {ElementType.METHOD})
@interface Myann{

}

而在指定Retention中时,直接传入value ,右键+Ctrl,能看到value是由RetentionPolicy修饰的,而RetentionPolicy本身是一个枚举类型.
有三种类型,SOURCE (源代码)< CLASS (类文件)< RUNTIME (运行态)。通常来说,自定义的注解中Retention都是置为Runtime状态。
操作代码:

@Target(value = {ElementType.METHOD,ElementType.TYPE})
@Retention(value = RetentionPolicy.RUNTIME)
@interface Myann{


}

完整版代码如下:

import java.lang.annotation.*;


public class Myannotation {

    @Myann(value = "woshi", vv = "")
    public void test(){

    }
}

// 照猫画虎的自定义注解即可。
@Inherited
@Documented
@Target(value = {ElementType.METHOD,ElementType.TYPE})
@Retention(value = RetentionPolicy.RUNTIME)
@interface Myann{
    //参数类型 参数名() default ;
//    default 用来指定 value的默认值的
//    若注解的参数只有一个且为value,那在传参时,可以省略不写value
    String  value() default "";
    String vv();  //定义了就一定要在使用注解时,传入参数。
    String[] schools() default{"西部开源","清华大学"};
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值