文档章节

注解学习day_1

肥猫钓鱼
 肥猫钓鱼
发布于 2014/11/18 09:57
字数 605
阅读 7
收藏 0

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

参考http://www.cnblogs.com/linjiqin/archive/2011/02/16/1956426.html学习时候写的demo //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());
	}
}

} 参考:http://www.cnblogs.com/linjiqin/archive/2011/02/16/1956426.html

© 著作权归作者所有

共有 人打赏支持
肥猫钓鱼
粉丝 1
博文 52
码字总数 9287
作品 0
深圳
程序员
私信 提问
新手如何快速打好java基础?

要打好基础,首先要知道学什么,然后有牛的老师带,然后疯狂练习。练习的时候也不能盲目练习,需要有反馈,不断增加难度,这样才能学好。最好全身心投入学习。 下面这份挺全的java基础大纲,...

JAVA大神
2017/12/01
0
0
spring mvc 时间日期转换(@DateTimeFormat 注解)

两种用法示例: 使用 @DateTimeFormat 注解有两种做法,如上面代码所示。 示例说明: 第一种是按照ISO国际标准的日期时间格式解析参数中的日期时间的,具体格式为此枚举变量: 第二种是按照自...

silenceyawen
2017/06/09
102
0
spring-- spring task

有注解和xml两种形式配置spring-task 基于注解方式 1.springmvc.xml配置 2.方法上加注解 备注:类上加上@Component注解可以被扫描到,因此类里面的@Scheduled才能被扫描到;如果类上不加注解...

求是科技
2016/09/09
26
0
VOIP网络基本拓扑结构----基本组网

之前写的几篇文章,很多兄弟喜欢,但是导图的制作,太耗费时间。 现在想改变一种方式,通过纸笔,画图加注解的方式,呈现出来。 也算是属于脑图,但是更加随意,纯手工,呵呵..... 最近会分享...

徐会刚
2015/12/08
0
0
spring boot框架学习之重要注解3注解方式读取外部资源配置文件

本节主要内容: 1:是用非注解方式怎么获取配置文件中的配置项 2:使用注解实战获取外部properties文件配置项 声明: 本文是《凯哥陪你学系列-框架学习之spring boot框架学习》中spring boot框...

799879287
2017/10/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot中使用@RequestBody时如何自定义需要转换的日期格式

SpringBoot序列化和反序列化Json时默认使用的是Jackson(例如使用@RequestBody反序列化前端传递过来的Json字符串时), 当我们前端使用Json字符串传递到后台时日期格式可能是时间戳(即long类...

帅得拖网速
31分钟前
0
0
可自定义扩展底部列表对话框ListBottomSheetDialogFragment

因为需要,为了方便,构建了一个可以自定义扩展的底部列表对话框,可以应付大部分场景。 效果图如下: 1.默认实现: 2.自定义列表实现 3.自定义头部和列表实现 一.可实现功能 1.默认可实现通...

明月春秋
今天
1
0
数据库---增删改查

增:insert into 表名(列名1,列名2) values(‘列值1’,‘列值2’) 多行数据处理:insert into 表名(列名1,列名2) select ‘列值1’,‘列值2’ union select ‘列值1.1’,‘列值2.2...

森林之下
今天
2
0
分布式/集群下session共享方案汇总

除去那些对容器依赖特别高的方案(如: 基于Tomcat的memcached-session-manager / tomcat-redis-session-manager,基于Jetty的jetty-nosql-memcache / jetty-session-redis ),自己整理了下...

哥本哈根的小哥
今天
2
0
Vue中的缩写:v-bind、v-on

v-bind 缩写:: 预期:any (with argument) | Object (without argument) 参数:attrOrProp (optional) 修饰符: .prop - 被用于绑定 DOM 属性。 .camel - (2.1.0+) 将 kebab-case 特性名转换......

文文1
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部