Java注解

10 篇文章 0 订阅

1. 概述

  • 注解也叫元数据,它是一种代码级别的说明。
  • 注解使用方式:@注解名
  • 注解和注释不同。注释是只是给人看的,它不参与到程序。而注解既是给人看的,也是给程序看的,它要参与到程序。
  • 注解可以通过反射机制被访问。

 


 

2. 三种内置注解

  • 在Java中有三种内置的注解:@Override@Deprecated@SuppressWarnings

    • @Override 重写的注解,表示该方法为重写方法
    • @Deprecated 方法废弃的注解,表示该方法已经过时或存在问题,不推荐程序员使用
    • @SuppressWarnings 抑制编译器警告的注解,其需要至少一个表示要抑制的警告的值
    // 三种内置注解
    public class AnnotationDemo01 {
    
        // @Override 重写的注解,表示该方法为重写方法
        @Override
        public String toString() {
            return  "被重写了~~~";
        }
    
        // @Deprecated 方法废弃的注解,表示该方法已经过时或存在问题,不推荐程序员使用
        @Deprecated
        public void testDeprecated() {
            System.out.println("该方法已经被废弃~~~");
        }
    
        // @SuppressWarnings 抑制编译器警告的注解,其需要至少一个表示要抑制的警告的值
        @SuppressWarnings("unused")
        public void testSuppressWarnings() {
            Object o = new Object();    // 加上@SuppressWarnings注解后,编译器不会提示对象未使用
        }
    
        public static void main(String[] args) {
    
            AnnotationDemo01 annotationDemo01 = new AnnotationDemo01();
    
            System.out.println(annotationDemo01.toString());
            annotationDemo01.testDeprecated();  // 方法仍然可以调用,但调用时会在方法上显示横线划去
    
            /*
            结果:
            被重写了~~~
            该方法已经被废弃~~~
             */
    
        }
    
    }
    

 


 

3. 四种元注解和自定义注解

  • 元注解是负责注解其他注解的注解,Java中定义了@Target@Retention@Documented@Inherited四种

    • @Target():描述注解的使用范围,范围取决于括号内的值,一般的值有:ElementType.TYPE(类、接口、枚举)、ElementType.METHOD(方法)、ElementType.FIELD(属性)…
    • @Retention():描述注解的生命周期,生命周期取决于括号内的值,该值有三个:RetentionPolicy.SOURCE、RetentionPolicy.CLASS和RetentionPolicy.RUNTIME,一般值取RetentionPolicy.RUNTIME(生命周期:RUNTIME>CLASS>SOURCE)
    • @Documented:表示注解将被包含在JavaDoc文档中
    • @Inherited :表示子类可以继承父类的该注解
  • 通过元注解可以自定义注解,自定义注解的格式:public @interface 注解名 { 类型 参数名();… }

  • 自定义注解可以定义的类型只能为:基本数据类型,枚举类型,Class,String

  • 自定义注解中的参数可以使用default来声明参数的默认值,一般为空字符串、0

  • 自定义注解如果只有一个参数,一般参数名为value(参数名为value时,使用注解可以将“@注解名(value = 值)”简化为“@注解名(值)”)

    import java.lang.annotation.*;
    
    // 四种元注解 用于注解其他注解的注解
    @Target(ElementType.TYPE) // 描述注解的使用范围,范围取决于括号内的值
    @Retention(RetentionPolicy.RUNTIME)   // 描述注解的生命周期,生命周期取决于括号内的值
    @Documented // 表示注解将被包含在JavaDoc文档中
    @Inherited  // 表示子类可以继承父类的该注解
    public @interface AnnotationDemo02 {
    
        // 自定义值
        String value(); // 字符串
        String name() default "";   // 带默认值的字符串
        int age() default 0;    // 带默认值的基本数据类型int
        double[] array();   // 基本数据类型double
        Class aClass(); // Class类型
        TestEnum aEnum();   // 枚举类型
    
    }
    
    enum TestEnum {
        RED,
        BLUE,
        GREEN
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值