注解

注解

三大内置注解:

@Override:重写的注解;

@Deprecated:不推荐程序员使用,但是可以使用,或有更好的方式;

@SuppressWarnings:告诉编译器忽略指定的警告,不用在编译完成后出现警告信息;

示例代码如下:

package com.han.annotation;

import java.util.ArrayList;
import java.util.List;

/**
 * 内置注解
 */
public class Test01 extends Object{
    @Override //重写的注解
    public String toString() {
        return super.toString();
    }

    @Deprecated //不推荐程序员使用,但是可以使用,或有更好的方式
    public static void test1(){
        System.out.println("Deprecated");
    }

    @SuppressWarnings("all") //告诉编译器忽略指定的警告,不用在编译完成后出现警告信息
    public static void test2(){
        List list = new ArrayList<>();
    }

    public static void main(String[] args) {
        test1();
    }
}

元注解:

元注解的作用就是负责注解其他注解,Java定义了4个meta-annotation类型,他们被用来提供对其他annotation类型作说明,这些类型和他们所支持的类在java.lang.annotation包下可以找到

  • @Target 用来描述注解的使用范围(被描述的注解可以在什么地方使用)
  • @Retention 表是需要在什么级别保存该注释信息,用于表示注解的生命周期(SOURCE<CLASS<RUNTIME)
  • @Documented 说明该注释将保存在javadoc中
  • @Inherited 说明子类可以继承父类的该注解
package com.han.annotation;

import java.lang.annotation.*;

/**
 * 元注解
 * 元注解的作用就是负责注解其他注解,Java定义了4个meta-annotation类型,他们被用来提供对其他annotation类型作说明
 * 这些类型和他们所支持的类在java.lang.annotation包下可以找到
 * @Target 用来描述注解的使用范围(被描述的注解可以在什么地方使用)
 * @Retention 表是需要在什么级别保存该注释信息,用于表示注解的生命周期(SOURCE<CLASS<RUNTIME)
 * @Documented 说明该注释将保存在javadoc中
 * @Inherited 说明子类可以继承父类的该注解
 */
@MyAnnotation
public class Test02 {
    public void test(){

    }
}

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

}

自定义注解:

package com.han.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 自定义注解
 */
public class Test03 {
    //注解可以显示赋值,如果没有默认值,我们必须给它赋值
    @MyAnnotation2(age = 18,name = "张三")
    public void test(){

    }

    //如果只有一个value变量,那么使用该注解时,变量名可以不写,直接写上变量值就行
    @MyAnnotation3("张三")
    public void test3(){

    }
}

@Target(value = {ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation2{
    //注解的参数 参数类型 参数名()
    String name() default "";
    int age();
    int id() default -1;
    String [] schools() default {"清华大学","北京大学"};
}

@Target(value = {ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation3{
    String value();
}
posted @ 2021-12-15 11:14  Dawn_006  阅读(47)  评论(0)    收藏  举报