文档章节

注解学习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
机器学习 人工智能 博文链接汇总

115 [入门问题] [TensorFlow] [深度学习] [好玩儿的算法应用实例] [聊天机器人] [神经网络] [机器学习] [机器学习算法应用实例] [自然语言处理] [数据科学] [Python] [Java] [机器学习--初...

aliceyangxi1987
2017/05/13
0
0
spring boot框架学习之重要注解3注解方式读取外部资源配置文件

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

799879287
2017/10/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Mac OS X下Maven的安装与配置

Mac OS X 安装Maven: 下载 Maven, 并解压到某个目录。例如/Users/robbie/apache-maven-3.3.3 打开Terminal,输入以下命令,设置Maven classpath $ vi ~/.bash_profile 添加下列两行代码,之后...

TonyStarkSir
今天
3
0
关于编程,你的练习是不是有效的?

最近由于工作及Solution项目的影响,我在重新学习DDD和领域建模的一些知识。然后,我突然就想到了这个问题,以及我是怎么做的? 对于我来说,提升技能的项目会有四种: 纯兴趣驱动的项目。即...

问题终结者
今天
4
0
打开eclipse出现an error has occurred see the log file

解决方法: 1,打开eclipse安装目录下的eclipse.ini文件; 2,打开的文本文件最后添加一行 --add-modules=ALL-SYSTEM 3,保存重新打开Eclipse。...

任梁荣
昨天
4
0
搞定Northwind示例数据库,无论哪个版本的SQLServer都受用

Northwind数据库 从这里可以找到突破口: http://social.msdn.microsoft.com/Forums/zh-CN/Vsexpressvb/thread/8490a1c6-9018-40c9-aafb-df9f79d29cde 下面是MSDN: http://msdn2.microsoft......

QQZZFT
昨天
1
0
mysql主从同步,安装配置操作

准备 两台mysql服务,我这里准备了如下: 主库:192.168.176.128 从库:192.168.176.131 如何在Linux上安装mysql服务,请看https://blog.csdn.net/qq_18860653/article/details/80250499 操作...

小致dad
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部