扫盲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在源码中有效,在运行时没有效

扫盲java基础-注解_第1张图片
3、作用域标为Class类型的时候还是null
扫盲java基础-注解_第2张图片
运行下Myclass的类:因为SOURCE的作用域在字节码文件上
扫盲java基础-注解_第3张图片
因为类运行的时候是加载到java虚拟机上的,所以一般自定义的注解都是Runtime,因为在运行期间拿它的注解的对象
扫盲java基础-注解_第4张图片
运行结果
扫盲java基础-注解_第5张图片
注解里面可以定义方法的比如:定义一个value方法的声明,这个方法的声明在MyAnnotation里面称之为属性也是没问题的,好比接口一样
扫盲java基础-注解_第6张图片
但是一般定义一个空的字符串就可以了
扫盲java基础-注解_第7张图片
如果是在注解里面就一个Value属性的话,在Myclass类里面上MyAnnotation注解上的属性Value不用写
扫盲java基础-注解_第8张图片
如何拿这个类上面的注解所对应方法的值呢?代码如下:

如果不强转的话,用泛型也是Ok的。
扫盲java基础-注解_第9张图片
上面的注解就是标在类上,注解也可以标注在字段上扫盲java基础-注解_第10张图片扫盲java基础-注解_第11张图片
然后运行下MyClass类扫盲java基础-注解_第12张图片注解也可以标注在方法上和参数上代码如下
扫盲java基础-注解_第13张图片获取参数值的代码如下:二维数组里面的每一个下表存的是一维数组,一维数组里面存的是注解的对对象扫盲java基础-注解_第14张图片扫盲java基础-注解_第15张图片
欢迎各位小伙伴来咨询,想要工程源码的加群:797853299

你可能感兴趣的:(JAVA,基础)