扫盲java基础-注解

  • Post author:
  • Post category:java




一、基础知识

1、注解是jdk1.5版本提供的一个特征:@Deprecated:标识使用方法已经被放弃,但是还可以使用 @SuppressWarnings(“all”) //@SunppressWarnings(“uncheck”) 取消警告操作

2、元注解:不能包含其他注解的注解(元数据) @Documented 生成 JavaDoc文档的时候会生成在文件中 @Retetion 代表该注解的作用域:SOURCE:代表源码中有效 CLASS:字节码文件中有效。RUNTIME:JVM上面运行时都有效 @Target:指定注解能够出现的位置 TYPE:标注在类上面 METHOD:标注在方法上面 PARAMETER:标在参数上面 FIELD:标注在字段上面 @Interned:注解可以继承。



二、代码



1、新建一个注解

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 注解@Inteface标识
* 指定作用域和位置
*/
@Retention(RetentionPolicy.SOURCE)
@Target({ElementType.TYPE})
public @interface MyAnnotation {
}


2、写一个类来用上面的注解@MyAnnotation,这时拿的值为空,因为SOURCE在源码中有效,在运行时没有效

在这里插入图片描述


3、作用域标为Class类型的时候还是null


在这里插入图片描述

运行下Myclass的类:因为SOURCE的作用域在字节码文件上

在这里插入图片描述

因为类运行的时候是加载到java虚拟机上的,所以一般自定义的注解都是Runtime,因为在运行期间拿它的注解的对象

在这里插入图片描述

运行结果

在这里插入图片描述

注解里面可以定义方法的比如:定义一个value方法的声明,这个方法的声明在MyAnnotation里面称之为属性也是没问题的,好比接口一样

在这里插入图片描述

但是一般定义一个空的字符串就可以了

在这里插入图片描述

如果是在注解里面就一个Value属性的话,在Myclass类里面上MyAnnotation注解上的属性Value不用写

在这里插入图片描述

如何拿这个类上面的注解所对应方法的值呢?代码如下:

如果不强转的话,用泛型也是Ok的。

在这里插入图片描述

上面的注解就是标在类上,注解也可以标注在字段上
在这里插入图片描述
在这里插入图片描述

然后运行下MyClass类
在这里插入图片描述
注解也可以标注在方法上和参数上代码如下

在这里插入图片描述
获取参数值的代码如下:二维数组里面的每一个下表存的是一维数组,一维数组里面存的是注解的对对象
在这里插入图片描述
在这里插入图片描述


欢迎各位小伙伴来咨询,想要工程源码的加群:797853299



版权声明:本文为Brave_heart4pzj原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。