Java注解Annotation的写法以及注意
来源:互联网 发布:时时彩开奖动画源码 编辑:程序博客网 时间:2024/06/10 13:07
现许多流行框架都有注解配置,Java注解是JDK1.5以后引入的一个特性。它可以使用在类、方法、数据字段上。注解是与反射配合使用的,可以通过Class类的getAnnatation等方法获取注解。
先来看看怎么编写注解吧。
1、声明。
声明类使用的是class关键字,接口是interface关键字,声明注解使用的是@interface关键字,如下:
public @interface MyAnnatation {}2、编写注解的内容。
public @interface MyAnnatation {//为注解声明一个username属性,默认值为空串public String username() default "";//value属性没有默认值public String value();public String sex() default "man";}3、编写完成后最重要的是要在注解类上加上几个注解,以表示该注解类是用来注解什么的。最终如下:
@Documented //文档声明,会被javadoc文档工具记录//声明注解类注解的范围,是变量,还是方法,还是类,还是参数@Target(value={ElementType.FIELD,ElementType.METHOD,ElementType.TYPE,ElementType.CONSTRUCTOR})//最重要的一个@Retention(RetentionPolicy.RUNTIME)public @interface MyAnnatation {//为注解声明一个username属性,默认值为空串public String username() default "";//value属性没有默认值public String value();public String sex() default "man";}最重要的属于给注解类加上@Retention注解。该注解有三个值,SOURCE、CLASS、RUNTIME。
我们知道java源文件经过javac指令后被编译成class字节码(Byte Code)文件,再经JVM解析执行class文件。
SOURCE表示注解只会存在于源文件(.java)中,经过编译后class文件中就不存在该注解。
CLASS表示经过编译后任然会存在与class文件中,但经JVM解析后不会出现在内存中。
RUNTIME则比CLASS更近一步,运行时仍能生效。
编写完成后,试一试怎么使用注解吧!
1、新建User类,在User的其中一个属性或者方法上使用MyAnnatation注解。
public class User {private String username;private String password;@MyAnnatation(value="我是getUsername方法",username="zs")public String getUsername() {return username;}@MyAnnatation(value="我是setUsername方法")public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}2、通过反射获取MyAnnatation的值。
public class TestAnnatation {public static void main(String[] args) throws Exception{@SuppressWarnings("rawtypes")Class clz = Class.forName("org.yamikaze.model.User");Method[] methods = clz.getDeclaredMethods();for(Method method : methods) {//判断方法上是否声明了MyAnnatation注解if(method.isAnnotationPresent(MyAnnatation.class)) {//相应操作//获取方法上的注解MyAnnatation ma = method.getAnnotation(MyAnnatation.class);System.out.println(ma.value() + "," + ma.username() + "," + method.getName());}}}}
结果:
由于编写注解比较简单(认为难的表打我/(ㄒoㄒ)/~~),建议多看下Spring等开源框架的注解写法。
阅读全文
0 0
- Java注解Annotation的写法以及注意
- java 注解annotation的使用,以及反射如何获取注解
- java 注解annotation的使用,以及反射如何获取注解
- java 注解annotation的使用,以及反射如何获取注解
- Java的注解(Annotation)
- java的注解annotation
- JAVA的注解Annotation
- Java Annotation 常用的注解
- Java的Annotation(注解)
- java annotation注解的解析
- java注解annotation的解释
- Java注解Annotation的使用
- Java注解Annotation的基本概念
- 深入理解java注解(Annotation)以及 自定义注解入门
- 深入理解java注解(Annotation)以及 自定义注解入门
- 【Java】【Annotation】Java Annotation (注解)
- @interface java注解--Java的Annotation注释
- Java自定义注解Annotation的使用
- 初窥Linux 之 我最常用的20条命令
- 使用cacti监控机器
- UVA 10474 Where is the Marble?【vector的sort用法】
- Java Intro
- jxl 读取 Excel文件
- Java注解Annotation的写法以及注意
- [c++]关于类的静态成员
- Windows 命令行设置静态IP及DNS
- JZOJ3777. 【NOI2015模拟8.17】最短路(shortest)
- 高斯消元基础题
- HDU1036 Average is not Fast Enough!
- 三层结构程序设计
- EA怎么画类图
- 【SpringBoot】Spring-->SpringBoot 习惯优于配置