注解

2022/4/11 23:19:15

本文主要是介绍注解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、注解

1.1、Annotation 基本概念

作用:

不是程序本身,而是对程序作出解释 可以被其他程序(如编译器等)读取

格式:

@注释名(参数值) ps:不一定有参数

使用情景:

可以附加在 包、类、方法、属性 等上面 可以通过反射机制编程实现对这些元数据的访问

1.2、内置注解

@Override   //重写注解
@Deprecated //不推荐使用注解,表示危险或有更好的选择
@SuppressWarnings   //抑制警告信息。需要加参数

1.3、元注解

作用

注解其他注解。

主要有4个

@Target:用于描述注解的使用范围(用在哪) @Retention:用于表示需要在什么级别保存注解信息,用于描述注解的声明周期,(SOURCE < CLASS < RUNTIME) @Document:说明该注解将被包含在 javadoc 中 @Inherited:说明子类可以继承父类中的该注解

测试元注解

package com.kuang.annotation;
​
import java.lang.annotation.*;
​
//测试元注解
public class Test01 {
    @MyAnnotation
    public void test(){
​
    }
}
​
//定义一个注解
//Target 表示我们的注解可以用在哪些地方
//ElementType.TYPE表示能在类级别的生效
@Target(value = {ElementType.METHOD, ElementType.TYPE})
​
//Retention 表示我们的注解在什么地方还有效
// runtime > class > sources
@Retention(value = RetentionPolicy.RUNTIME)
​
//Documented 表示是否将我们的注解生成在 Javadoc中
@Documented
​
//Inherited 子类可以继承父类的注解
@Inherited
@interface MyAnnotation{
​
}
​

测试自定义注解

package com.kuang.annotation;
​
import java.lang.annotation.ElementType;
​
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
​
//自定义注解
public class Test02 {
    //注解可以显示赋值,如果没有默认值,我们就必须给注解赋值
    @MyAnnotation2(name = "帅哥")
    public void test(){}
    
​
    @MyAnnotation3("帅哥")
    public void test2(){
        
    }
​
}
​
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation2{
    //注解的参数格式:参数类型 + 参数名();
    String name() default "";
    int age() default 0;
    int id() default -1;    //如果默认值为-1,代表不存在。同indexof,如果找不到就返回-1
    
​
    String[] schools() default {"哔哩哔哩", "家里蹲大学"};
​
}
​
@interface MyAnnotation3{
    //若只有一个参数,就可以设置为value
    //这样就可以只用写("帅哥"),而不用写(name = "帅哥")
    String value();
}


这篇关于注解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程