Java 注解
来源:互联网 发布:mac 配置搜狗输入法 编辑:程序博客网 时间:2024/06/10 02:56
一:注解的基本概念
注解也被称为元数据,使我们在代码中添加信息提供了一种形式化的方法,在以后非常方便的使用该数据
Java内置的注解有三个:
@Overried:表示当前的方法将覆盖超类中的方法
@Deprecated:如果加了该注解,则编译器将会发出警告
@SuppressWaring:关闭警告信息
自定义注解:
@Retention(RetentionPolicy.RUNTIME)public @interface StudyAnnoation {}
这是一个简单的注解,我们定义一个注解就是在interface前面加上一个@符号,但是这样,注解只是在CLASS文件中可用,在运行阶段将不能使用,对此,Java提供了四种元注解来写自定义注解
@Target: 作用在什么地方 ElementType枚举类提供,
CONSTRUCTOR 构造器声明
FIELD 域声明(包括enum实例)
LOCAL_VARIABLE(局部变量声明)
METHOD (方法)
PACKAGE (包)
PARAMETER (参数)
TYPE (类,接口(包括enum声明))或enum声明
@Retention 表示该注解保留到什么时间 RetentionPolicy枚举类提供了三个,默认class
SOURCE 编译器丢弃
CLASS 在class文件中可用,在jvm中不可用
RUNTIME VM运行期
@Document 表示该注解包含在Javadoc文件中
@Inherited 允许子类继承父类的注解
测试代码
@StudyAnnoationpublic class AnnoationTest {public static void main(String[] args) {//测试该注解是否是此类型if(AnnoationTest.class.isAnnotationPresent(StudyAnnoation.class)){//得到该注解Annotation annoation = Annotation.class.getAnnotation(StudyAnnoation.class);System.out.println("StudyAnnoation");}}}
二.编写注解元素
注解元素可用的类型包括
所有的基本类型,String,Class,enum,注解,以上类型的数组
注解元素可用值的限制
注解元素不能具有不确定的值,也就是说必须提供默认值或者在调用时提供值。对于非基本类型的注解元素,其不能用null作为其值。可以用-1或者""来代替
例:新建一个注解
public @interface AnnoationType { String value();}
改写第一个注解类,包括一些注解元素
@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface StudyAnnoation { int id(); String name() default "name"; AnnoationType annoationType() default @AnnoationType("annoationType");}
测试:
@StudyAnnoation(id=1,name = "studyannoation")public class AnnoationTest {public static void main(String[] args) {//测试该注解是否是此类型if(AnnoationTest.class.isAnnotationPresent(StudyAnnoation.class)){//得到该注解StudyAnnoation annoation = AnnoationTest.class.getAnnotation(StudyAnnoation.class);//获取该接口的name方法System.out.println(annoation.name());System.out.println(annoation.id());System.out.println(annoation.annoationType().value());}}}
对于在使用注解的时候,传值有事要加元素名,有时不加,怎么区分了,只有当注解只有一个元素,并且名为value时,才不需要加
- Java注解-自定义注解
- Java注解----自定义注解
- Java注解自定义注解
- Java注解--四种元注解
- Java注解-三种內建注解
- 【Java】【注解】自定义注解
- java注解
- java注解
- java注解
- java 注解
- Java注解
- java 注解
- Java 注解
- Java注解
- java 注解
- JAVA注解
- Java注解
- Java注解
- 12.CentOS7下PostgreSQL安装过程
- 视频学习之旅(一) SurfaceView控件--------------画面重叠问题
- Buffer
- java后台导出excel,客户端下载
- Linux TOP命令 按内存占用排序和按CPU占用排序
- Java 注解
- char *b和char a[]
- 【Spring Boot】Spring Boot 入门
- SQL JOIN
- servlet、genericservlet、httpservlet之间的区别
- 随意输入一个正整数n, 在输入转化的进制数,将转化后的序列输出,并判断某一个数字的个数,这里给的是二进制的例子
- DEMO集合
- LeetCode:129. Sum Root to Leaf Numbers
- 日常知识点积累