注解

1.注解的定义

可以被程序识别的注释,可以添加在package、class、method、field等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问

格式:@注释名,以及可以添加一些参数值

例如:@Override,重写的注解

2.注解类型

2.1 内置注解

2.1.1 @Override

重写的注解

2.1.2 @Deprecated

不推荐使用的注解,是可以使用的,但存在更好的方式

2.1.3 @SuppressWarnings

镇压编译器的警告

例如:@SuppressWarnings("all")用于抑制所有的警告、@SuppressWarnings("unchecked") 用于抑制未检查的警告

2.2 元注解

负责注解其他的注解

2.2.1 @Target

@Target(value = {ElementType.METHOD,ElementType.TYPE})

Target表示我们的注解可以用在哪些地方

2.2.2 @Retention

@Retention(value = RetentionPolicy.RUNTIME)

表示我们的注解在什么地方还有效

runtime>class>sources,在runtime下有效的话在class和sources下肯定也有效

2.2.3 @Documented

@Documented

表示是否将我们的注解生成在JavaDoc中

2.2.4 @Inherited

@Inherited

子类可以继承父类的注解

2.3 自定义注解

使用@interface自定义注解,自动继承java.lang.annotation.Annotation接口

样例

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

public class Test03 {

    @MyAnnotation1(id = 2,schools = {"THU","PKU"})
    public void test(){
    }
    
    @MyAnnotation2("mouweng")
    public void test2(){
    }
}

@Target(value = {ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation1{
    String name() default "";
    int age() default 0;
    int id() default -1;
    String[] schools() default {"ZJU","HQU"};
}

@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)

@interface MyAnnotation2{
    String value();
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。