扫盲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

发布了126 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Brave_heart4pzj/article/details/104014692