Java注解@interface (入门)(转)

注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便地使用这些数据。

--------------------------------------------------------------------------------------------------------------------------------------------

1.定义注解:

[java] view plain copy

  1. package com.test;
  2. import java.lang.annotation.ElementType;
  3. import java.lang.annotation.Retention;
  4. import java.lang.annotation.RetentionPolicy;
  5. import java.lang.annotation.Target;
  6. @Target(ElementType.METHOD)
  7. @Retention(RetentionPolicy.RUNTIME)
  8. public @interface UseCase {
  9. public int id();
  10. public String description() default "no description";
  11. }

2.在下面的类中,有三个方法被注解为用例:

[java] view plain copy

  1. package com.test;
  2. import java.util.List;
  3. public class PasswordUtils {
  4. @UseCase(id = 47, description = "Passwords must contain at lease one numeric")
  5. public boolean validatePassword(String password) {
  6. return password.matches("\\w*\\d\\w*");
  7. }
  8. @UseCase(id = 48)
  9. public String encryptPassword(String password) {
  10. return new StringBuilder(password).reverse().toString();
  11. }
  12. @UseCase(id = 49, description = "New password can‘t equal previously used ones")
  13. public boolean checkForNewPassword(List<String> prevPasswords, String password) {
  14. return !prevPasswords.contains(password);
  15. }
  16. }

3.编写注解处理器:

[java] view plain copy

  1. package com.test;
  2. import java.lang.reflect.*;
  3. import java.util.*;
  4. public class UseCaseTracker {
  5. public static void trackUseCases(List<Integer> useCases, Class<?> cl) {
  6. for (Method m : cl.getDeclaredMethods()) {
  7. UseCase uc = m.getAnnotation(UseCase.class);
  8. if (uc != null) {
  9. System.out.println("Found Use Case:" + uc.id() + " " + uc.description());
  10. useCases.remove(new Integer(uc.id()));
  11. }
  12. }
  13. for (int i : useCases) {
  14. System.out.println("Warning: Missing use case-" + i);
  15. }
  16. }
  17. public static void main(String[] args) {
  18. List<Integer> useCases = new ArrayList<Integer>();
  19. Collections.addAll(useCases, 47, 48, 49, 50);
  20. trackUseCases(useCases, PasswordUtils.class);
  21. }
  22. }

输出:

Found Use Case:49 New password can‘t equal previously used ones
Found Use Case:47 Passwords must contain at lease one numeric
Found Use Case:48 no description
Warning: Missing use case-50

1
时间: 2024-10-02 00:43:49

Java注解@interface (入门)(转)的相关文章

java注解基础入门

前言 这篇博客主要是对java注解相关的知识进行入门级的讲解,包括**,核心内容主要体现在对java注解的理解以及如何使用.希望通过写这篇博客的过程中让自己对java注解有更深入的理解,在工作中可以巧妙的使用注解,完善自己对基础知识的理解和使用. 目录 1.注解概述 2.注解作用 3.java常见的注解 4.如何自定义注解       5.元注解       6.注解反射 1.注解的概述 注解,告诉编译器如何运行程序! 2.注解的作用 1)告诉编译器如何运行程序:         2)跟踪代码依

java注解详细-----入门篇

一.注解入门 JDK自带注解:@Override  ,  @Deprecated  , @Suppresswarnings 常见的第三方注解:Spring框架:@Autowired  , @Service  , @Repository Mybatis框架:@InsertProvider  , @UpdateProvider  , @Options 二.注解分类 a. 按照运行机制分 b. 按照来源分 原文地址:https://www.cnblogs.com/bzsz-quan/p/9188745

Java注解入门

注解的分类 按运行机制分: 源码注解:只在源码中存在,编译后不存在 编译时注解:源码和编译后的class文件都存在(如@Override,@Deprecated,@SuppressWarnings) 运行时注解:能在程序运行时起作用(如spring的依赖注入) 按来源分: 来自JDK的注解 第三方的注解 自定义的注解 自定义注解   如下实例给出了自定义注解的基本方法 1 package com.flypie.annotations; 2 3 import java.lang.annotatio

Java 注解 入门

这几天在学习Spring3.x,发觉现在许多框架都用上了java注解功能,然后自己就对java注解这方面初步学习了一下. 首先,注解跟注释不是一个意思,也根本不是同一个事物. 注释就是我们平常平常中对代码作解释的,也就是常见的"//..........."和"/*..............*/",相信大家也很熟悉,这里就不多说了. 对于注解,可以说是一个非常有用的技术,何为注解,其实注解就是作为一种描述,是对代码的一种描述,并且是可以读取的,可以是在程序运行时写进

转:java 注解 @Retention @interface 元数据

原文: http://www.cnblogs.com/coolgun/p/3802535.html java注解 即是注释了,百度解释:也叫元数据.一种代码级别的说明. 个人理解:就是内容可以被代码理解的注释,一般是一个类. 元数据 也叫元注解,是放在被定义的一个注解类的前面 ,是对注解一种限制.只有两个: @Retention 和 @Target  (我只查到这两个). @Retention :用来说明该注解类的生命周期.它有以下三个参数: RetentionPolicy.SOURCE  :

java 注解@Retention @interface 元数据

原文  http://www.cnblogs.com/coolgun/p/3802535.html java注解 即是注释了,百度解释:也叫元数据.一种代码级别的说明. 个人理解:就是内容可以被代码理解的注释,一般是一个类. 元数据 也叫元注解,是放在被定义的一个注解类的前面 ,是对注解一种限制.只有两个: @Retention 和 @Target  (我只查到这两个). @Retention :用来说明该注解类的生命周期.它有以下三个参数: RetentionPolicy.SOURCE  :

attilax.java 注解的本质and 使用最佳实践(3)O7

attilax.java 注解的本质and 使用最佳实践(3)O7 1. 定义pojo 1 2. 建立注解By eclipse tps 1 3. 注解参数的可支持数据类型: 2 4. 注解处理器 2 5. 读取注解 2 6. 不能读取到注解,为null的解决 3 7. 参考: 3 1. 定义pojo public class pojo { @Validate("required") String name; int id; @Validate("required")

Java注解(2)-注解处理器(运行时|RetentionPolicy.RUNTIME)

如果没有用来读取注解的工具,那注解将基本没有任何作用,它也不会比注释更有用.读取注解的工具叫作注解处理器.Java提供了两种方式来处理注解:第一种是利用运行时反射机制:另一种是使用Java提供的API来处理编译期的注解. 反射机制方式的注解处理器 仅当定义的注解的@Retention为RUNTIME时,才能够通过运行时的反射机制来处理注解.下面结合例子来说明这种方式的处理方法. Java中的反射API(如java.lang.Class.java.lang.reflect.Field等)都实现了接

Java注解(1)-注解基础

注解(Annotation)是在JAVA5中开始引入的,它为在代码中添加信息提供了一种新的方式.注解在一定程度上把元数据与源代码文件结合在一起,正如许多成熟的框架(Spring)所做的那样.那么,注解到底可以做什么呢? 1.注解的作用. 提供用来完整地描述程序所需要的信息,如编译期校验程序信息. 生成描述符文件,或生成新类的定义. 减轻编写"样板"代码(配置文件)的负担,可以使用注解自动生成. 更加干净易读的代码. 编译期类型检查. 2.Java提供的注解 Java5内置了一些原生的注