博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
注解学习day_1
阅读量:5904 次
发布时间:2019-06-19

本文共 2504 字,大约阅读时间需要 8 分钟。

hot3.png

注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。

参考 //Java中提供了四种元注解,专门负责注解其他的注解,分别如下 //@Retention元注解,表示需要在什么级别保存该注释信息(生命周期)。可选的RetentionPoicy参数包括: //RetentionPolicy.SOURCE: 停留在java源文件,被编译器丢掉 //RetentionPolicy.CLASS:停留在class文件中,但会被VM丢弃(默认) /RetentionPolicy.RUNTIME:内存中的字节码,VM将在运行时也保留注解,因此可以通过反射机制读取注解的信息

//@Target元注解,默认值为任何元素,表示该注解用于什么地方。可用的ElementType参数包括 //ElementType.CONSTRUCTOR: 构造器声明 //ElementType.FIELD: 成员变量、对象、属性(包括enum实例) //ElementType.LOCAL_VARIABLE: 局部变量声明 //ElementType.METHOD: 方法声明 //ElementType.PACKAGE: 包声明 //ElementType.PARAMETER: 参数声明 //ElementType.TYPE: 类、接口(包括注解类型)或enum声明

//@Documented将注解包含在JavaDoc中

//@Inheried允许子类继承父类中的注解

package test.annotations;

import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;

import test.enums.Gender; @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD,ElementType.TYPE}) public @interface MyAnnotation { //为注解添加属性 String color(); //为属性添加默认值 String value() default "我是注解"; // int[] array() default {1,2,3,4};

//添加一个枚举类型Gender gender() default Gender.MAN;//添加一个注解类型MetaAnnotation metaAnnotation() default @MetaAnnotation(brithday="2014年5-5");

}

//一个简单注解 package test.annotations;

public @interface MetaAnnotation { String brithday(); }

//一个简单枚举 package test.enums;

public enum Gender { MAN{ public String getName(){ return "男"; } }, WOMEN{ public String getName(){ return "女"; } }; public abstract String getName(); }

//然后测试 package test.app;

import test.annotations.MetaAnnotation; import test.annotations.MyAnnotation; import test.enums.Gender;

//调用注解并赋值 @MyAnnotation(color="red",array={1,2,3},gender=Gender.MAN,metaAnnotation=@MetaAnnotation(brithday="2014年5-5")) public class AnnotationApp { public static void main(String[] args){ //检查AnnotationApp类是否有MyAnnotation注解 if(AnnotationApp.class.isAnnotationPresent(MyAnnotation.class)){ //若存在就获取注解 MyAnnotation myAnnotation = AnnotationApp.class.getAnnotation(MyAnnotation.class); System.out.println(myAnnotation); //获得注解的属性 int[] arrs = myAnnotation.array(); for(int arr:arrs){ System.out.println(arr); } System.out.println(myAnnotation.color()); System.out.println(myAnnotation.gender()); //获取注解的注解属性 MetaAnnotation metaAnno = myAnnotation.metaAnnotation(); System.out.println(metaAnno.brithday());

System.out.println(myAnnotation.value());	}}

} 参考:

转载于:https://my.oschina.net/lijie531/blog/345766

你可能感兴趣的文章
DW 正则
查看>>
抓屏原理
查看>>
UNIX网络编程读书笔记:TCP输出、UDP输出和SCTP输出
查看>>
扩展 DbUtility (1)
查看>>
iOS开发UI篇—使用picker View控件完成一个简单的选餐应用
查看>>
Apple Developer Registration and DUNS Number Not Accepted
查看>>
Hadoop学习笔记系列文章导航
查看>>
SpringMVC中ModelAndView addObject()设置的值jsp取不到的问题
查看>>
Prometheus : 入门
查看>>
使用 PowerShell 创建和修改 ExpressRoute 线路
查看>>
在C#中获取如PHP函数time()一样的时间戳
查看>>
Redis List数据类型
查看>>
大数据项目实践(四)——之Hive配置
查看>>
初学vue2.0-组件-文档理解笔记v1.0
查看>>
Centos7安装Gitlab10.0
查看>>
上传图片预览
查看>>
lagp,lacp详解
查看>>
LVS之DR模式原理与实践
查看>>
Docker的系统资源限制及验证
查看>>
c++ ios_base register_callback方法使用
查看>>