注解

注解

什么是注解:也叫元数据,一种代码级别的说明。
	它是JDK1.5以后引入的一个特性,与类、接口、枚举在同一个层次。
	它可以声明在包、类、字段、方法、局部变量、参数列表等前面,用来对这些元素进行说明、注释。
有哪些注解:
	JDK中预定义的一些注解
	自定义的注解
注解有什么用:
1.编写文档:生成文档doc
/**
 * @since 1.5
 * @author husuting
 * @version 1.0
 */
public class Demo1 {
    /**
     * 计算两数之和
     * @param a 整数
     * @param b 整数
     * @return 两数之和
     */
  public int add(int a,int b){
      return a + b;
  }
}
2.代码分析:对代码进行分析---使用注解

3.编译检查:通过程序中的注解让编译器实现基本的编译检查

基本注解

@override:监测被该注解标注的方法是否继承自父类
@Deprecated:该注解标注的内容,已过时,有更好的替代方法
@SuppressWarinings:压制警告
@SuppressWarnings("all")//压制所有的警告 一般传递参数all
public class Demo2 {
    @Override
    public String toString(){
        return super.toString();
    }
    @Deprecated
    public void show1(){
        //有缺陷
    }
    public void show2(){
        //替代show1方法
    }
    public void demo(){
        show1();//已经过时 但还是可以使用 因为要兼容低版本
        show2();
    }
}

自定义注解

格式:
	元注解:
	public @Interface 注解名称(){}
	public @interface Demo3 {}
本质:本质就是一个接口,该接口默认继承Annotation接口
属性:接口中可以定义的方法,接口中的抽象方法,要给属性赋值
	如果定义属性时,使用default关键字给属性默认初始化值,则使用默认值
	如果只有一个属性,且这个属性的名称是value,则value可以省略。
@Demo3(show2 = 1,name = "12")
public @interface Demo3 {
    String name();//抽象方法是注解的属性
    int show2();
}

元注解

用来描述注解的注解
	@Target()//描述注解能够作用的范围
	@Retention()//描述注解保留的阶段
	@Documented//注解是否被抽取到api文档
	@Inherited//描述注解是否被子类继承
/*
    @Target()//描述注解能够作用的范围
        @Target(value={ElementType.TYPE})//只能作用在类上
        @Target(value={ElementType.FIELD})//只能作用在成员变量上
        @Target(value={ElementType.METHOD})//只能作用在方法上
    @Retention()//描述注解保留的阶段
        @Retention(RetentionPolicy.CLASS)在源码中保留JVM不可以读取
        @Retention(RetentionPolicy.RUNTIME)在运行时保留JVM可以读取
        @Retention(RetentionPolicy.SOURCE)加载过程中保留
    @Documented//注解是否被抽取到api文档
    @Inherited//描述注解是否被子类继承
 */
@Target(value={ElementType.TYPE})//只能作用在类上
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface Demo3 {
    String name();//抽象方法是注解的属性
    int show2();
}

解析注解

注解到底有什么用,获取值
//@Demo3(show2 = 1,name = "12")
public static void main(String[] args) {
    Class<Demo2> demo2Class = Demo2.class;//将进行了注解的类进行解析
    //即将被注解注释的类进行解析
    String name = demo2Class.getAnnotation(Demo3.class).name();//获取注解中的值
    System.out.println(name);
}

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值