java Annotation 自定义实例

Defining annotations

Here is the definition of the annotation above. You can see that annotation definitions look a lot like interface definitions.

In fact, they compile to class files like any other Java interface:

-------------------------------首先定义注释,类似一个接口--------------------------------------------------------------------

import java.lang.annotation.*;

@Target(ElementType.METHOD) //此处成为元注解 ,注解的定义需要元注解

@Retention(RetentionPolicy.RUNTIME)

public @interface UseCase {                                    //此处需要注意写法

public int id();

public String description() default "no description";

}

-------------------------------使用注释----------------------------------------------------------------------------------------------

import java.util.*;

public class PasswordUtils {

@UseCase(id = 47, description =

"Passwords must contain at least one numeric")

public boolean validatePassword(String password) {

return (password.matches("\\w*\\d\\w*"));

}

@UseCase(id = 48)

public String encryptPassword(String password) {

return new StringBuilder(password).reverse().toString();

}

@UseCase(id = 49, description =

"New passwords can’t equal previously used ones")

public boolean checkForNewPassword(

List<String> prevPasswords, String password) {

return !prevPasswords.contains(password);

}

}

-------------------------------使用反射机制,测试注解使用---------------------------------------------------------------------

import java.lang.reflect.*;

import java.util.*;

public class UseCaseTracker {

public static void

trackUseCases(List<Integer> useCases, Class<?> cl) {

for(Method m : cl.getDeclaredMethods()) {

UseCase uc = m.getAnnotation(UseCase.class);

if(uc != null) {

System.out.println("Found Use Case:" + uc.id() +

" " + uc.description());

useCases.remove(new Integer(uc.id()));

}

}

for(int i : useCases) {

System.out.println("Warning: Missing use case-" + i);

}

}

public static void main(String[] args) {

List<Integer> useCases = new ArrayList<Integer>();

Collections.addAll(useCases, 47, 48, 49, 50);

trackUseCases(useCases, PasswordUtils.class);

}

}

------------------------------------------------------------------输出结果----------------------------------------------------------------

/* Output:

Found Use Case:47 Passwords must contain at least one numeric

Found Use Case:48 no description

Found Use Case:49 New passwords can’t equal previously used ones

Warning: Missing use case-50

java Annotation 自定义实例,码迷,mamicode.com

时间: 2024-10-06 12:08:58

java Annotation 自定义实例的相关文章

Java:自定义注解(Annotation)

在网上找了很多资料也有写的比较好的,但是总有有一点半点的细节没有写出来,在这里自己总结下使用. 使用Java的自定义注解,首先个人需要了解下Java为我们提供的元注解和相关定义注解的语法.(这个我在网上选择了一篇详细的介绍链接在文章最底层) 1.首先自定义我们需要的注解 package com.plat; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lan

第17篇-JAVA Annotation 注解

第17篇-JAVA Annotation 注解 每篇一句 :真的努力后你会发现自己要比想象的优秀很多 初学心得: 怀着一颗奋斗不息的心,一切困苦艰辛自当迎刃而解 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-05-17| JAVA Annotation注解 ] 1.什么是注解(Annotation) Annotation 其实就是代码里的特殊标记, 它用于替代配置文件,也就是说,传统方式通过配置文件告诉类如何运行,有了注解技术后,开发人员可以通过注解告诉类如何运行.在Java技术

Java Annotation原理分析(一)

转自:http://blog.csdn.net/blueheart20/article/details/18725801 小引: 在当下的Java语言层面上,Annotation已经被应用到了语言的各个方面,它已经在现在的ssh开发中,通过Annotation极大的提高了开发的效率,堪称开发神器.在这篇文章中,我们来了解一下的Annotation在Java中的前身今世吧. 1.   Java Annotation因何而来? 最初从印象中,是可以替代之前JDK1.4开发中,大量繁琐的配置项,Ann

Java Annotation入门

Java Annotation入门作者:cleverpig 版权声明:本文可以自由转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明作者:cleverpig(作者的Blog:http://blog.matrix.org.cn/page/cleverpig)原 文:[http://www.matrix.org.cn/resource/article/44/44048_Java+Annotation.html]http://www.matrix.org.cn/resource/arti

回顾java Annotation(注解)

最近在学习中发现相当多的框架是通过注解来实现的.为了加深记忆,把注解重新做一下回顾. 首先注解不是注释.--但因为java语言内置了三个注解:@Override.@Deprecated.@SuppressWarnnings.第一个是通知编译器做方法覆盖检查:第二个是提醒程序员使用了过时的方法:第三个是通知编译器忽略警告.这三个内置注解用起来给人的感觉就象注释一样.而实际上注解的用法远不止这么简单,通过使用自定义注解有助于加深我们的理解. 使用自定义注解目的是为了给程序加上某些标记(这种标记也可称

JAVA上百实例源码以及开源项目

简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级.中级.高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情.执着,对IT的憧憬.向往!此时此景,笔者只专注Android.Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能.编辑音乐软件的朋友,这款实例会对你有所帮助.Calendar万年历 1个目标文件EJ

Java Annotation 机制源码分析与使用

1 Annotation 1.1 Annotation 概念及作用      1.  概念 An annotation is a form of metadata, that can be added to Java source code. Classes, methods, variables, parameters and packages may be annotated. Annotations have no direct effect on the operation of the

Java Annotation 总结

Annotation 被称为注解,在Java开发中是相当常见的,通过注解,我们可以简化代码提高开发效率.例如Override Annotation,这个应该算是在开发过程中使用最多的注解了.下面这个例子是Android Activity的onCreate方法最常用的注解: @Override public void onCreate(Bundle savedInstanceState); 1.Annotation 概念 An annotation is a form of metadata, t

自己写的基于java Annotation(注解)的数据校验框架

JavaEE6中提供了基于java Annotation(注解)的Bean校验框架,Hibernate也有类似的基于Annotation的数据校验功能,我在工作中,产品也经常需要使 用数据校验,为了方便和重用,自己写了一个简单的基于Annotation的校验框架.有兴趣的可以扩展. 框架说明: AnnotationValidable接口:所有需要使用该校验框架的类都要实现它,该类中没有任何方法需要实现,仅仅是一个表明那些类需要使用该校验框架的标识. GetFiledValue类:是一个工具类,对