1、注解的定义

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; /**
* 创建时间:2015-7-1 下午2:36:37
* 自己定义一个注解方法
* 元注解:修饰注解的注解 经常使用的有
* @Target,注解作用的位置; @Retention,注解作用的时间;
* @Document,注解包括在javadoc中; @Inherited,同意子类继承父类的注解;
* @Override,当前方法将覆盖超累中的方法。 @Deprecated,不提倡用的代码;
* @SuppressWarnings,关闭不当编译器警告信息。
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
//1、 注解的元素看起来就像接口的方法,唯一的差别在于能够为其制定默认值。 //2、 注解的可用的类型包括下面几种:全部基本类型、String、Class、enum、Annotation、以上类型的数组形式。 //3、 元素不能有不确定的值。即要么有默认值,要么在使用注解的时候提供元素的值。 并且元素不能使用null作为默认值。
//4、 注解在仅仅有一个元素且该元素的名称是value的情况下,在使用注解的时候能够省略"value=",直接写须要的值就可以。
public @interface UserCase{
public int id();
public String password() default "jelly";
String[] value1() default "abc";
MyEnum value2() default MyEnum.Sunny;
}
enum MyEnum{
Sunny,Rainy
}

2、注解的使用

/**
* 创建时间:2015-7-1 下午2:50:08
* 类说明:使用注解
*/
public class PasswordUtils {
@UserCase(id = 47, password = "汉字jell")
public boolean validatePassword(String password) {
return (password.matches("\\w*\\d\\w*"));
} @UserCase(id = 48)
public String encryptPassword(String password) {
return new StringBuilder(password).reverse().toString();
} }

3、注解的測试

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import org.junit.Test;
/**
* 创建时间:2015-7-1 下午3:02:12
* 类说明:測试注解的使用方法
*/
public class DefineTest { /**
* @date 2015-7-1 下午1:45:24
*/
@Test
public void testDefine1(){
List<Integer> useCases = new ArrayList<Integer>();
Collections.addAll(useCases, 47, 48, 49, 50);
trackUseCases(useCases, PasswordUtils.class);
}
//注解处理器就是通过反射机制获取(cl就是得到的类对象) 被检查方法 上的注解信息。然后依据注解元素的值进行特定的处理。 public static void trackUseCases(List<Integer> useCases, Class<?> cl) {
for (Method m : cl.getDeclaredMethods()) {
UserCase uc = m.getAnnotation(UserCase.class);
if (uc != null) {
System.out.println("Found User Case:" + uc.id() + " "
+ uc.password());
useCases.remove(new Integer(uc.id()));
}
}
for (int i : useCases) {
System.out.println("Missing user case-" + i);
}
}
}

java注解Annotation的使用实例的更多相关文章

  1. 深入JAVA注解-Annotation(学习过程)

    JAVA注解-Annotation学习 本文目的:项目开发过程中遇到自定义注解,想要弄清楚其原理,但是自己的基础知识不足以支撑自己去探索此问题,所以先记录问题,然后补充基础知识,然后解决其问题.记录此 ...

  2. 深入学习JAVA注解-Annotation(学习过程)

    JAVA注解-Annotation学习 本文目的:项目开发过程中遇到自定义注解,想要弄清楚其原理,但是自己的基础知识不足以支撑自己去探索此问题,所以先记录问题,然后补充基础知识,然后解决其问题.记录此 ...

  3. Java - 注解 (Annotation)

    Java - 注解 (Annotation)   一.基本的 Annotation     > 使用 Annotation 时要在其前面增加 @符号,并把该 Annotation 当成一个修饰符 ...

  4. Java注解Annotation(一)

    Java注解Annotation(一)——简介 这一章首先简单介绍一下注解,下一章会给出一个注解应用的DEMO. 1. 元注解 元注解的作用是负责注解其他的注解. JDK1.5中,定义了4个标准的me ...

  5. Java注解(Annotation)详解

    转: Java注解(Annotation)详解 幻海流心 2018.05.23 15:20 字数 1775 阅读 380评论 0喜欢 1 Java注解(Annotation)详解 1.Annotati ...

  6. Java注解Annotation与自定义注解详解

    Java注解简介 开发中经常使用到注解,在项目中也偶尔会见到过自定义注解,今天就来探讨一下这个注解是什么鬼,以及注解的应用场景和如何自定义注解. 下面列举开发中常见的注解 @Override:用于标识 ...

  7. Java注解Annotation学习

    学习注解Annotation的原理,这篇讲的不错:http://blog.csdn.net/lylwo317/article/details/52163304 先自定义一个运行时注解 @Target( ...

  8. java 注解Annotation

    什么是注解?  注解,顾名思义,注解,就是对某一事物进行添加注释说明,会存放一些信息,这些信息可能对以后某个时段来说是很有用处的. java注解又叫java标注,java提供了一套机制,使得我们可以对 ...

  9. 秒懂,Java 注解 (Annotation)你可以这样学 - CSDN博客

    https://blog.csdn.net/briblue/article/details/73824058 文章开头先引入一处图片. 这处图片引自老罗的博客.为了避免不必要的麻烦,首先声明我个人比较 ...

随机推荐

  1. JavaScript中0和""的比较问题

    今天在公司的时候发现了一个很奇怪的Js的问题,以前也没有注意到,我从数据库中取出某一个字段的值,而这个字段值刚好是0,然后我在判断这个值是不是等于""时,就出现了如下的问题: 就是 ...

  2. WCF实现多个服务

    本篇体验使用WCF实现2个服务.一个使用HTTP通讯,一个使用TCP通讯. 大致思路是: → 创建WCF服务以及接口,写2个接口→ 实现2个接口→ 为WCF创建一个控制台项目的宿主,配置App.con ...

  3. 直接将DataTable存入oracle数据库中(转)

    注意 1:传入的DataTable的列必须和数据库中表列必须一致,否则数据会默认往前几列存 2:sql语句只要是对要插入的表的一个查询,目的是为了确定表名 3:取得连接字符串的方法为GetOracle ...

  4. String Matching(poj1580)

    /*String Matching Description It's easy to tell if two words are identical - just check the letters. ...

  5. 树莓派2B安装Xware迅雷远程下载

    转自:http://www.cnblogs.com/liangjh/articles/5347811.html 一.安装使用迅雷Xware (1)下载Xware1.0.31_armel_v5te_gl ...

  6. Unity Shader-法线贴图(Normal)及其原理

    简介 以前经常听说“模型不好看啊,怎么办啊?”答曰“加法线”,”做了个高模,准备烘一下法线贴图”,“有的美术特别屌,直接画法线贴图”.....法线贴图到底是个什么鬼,当年天真的我真的被这个图形学的奇淫 ...

  7. Android之关于MAC把java7改为java6的方法

    先来个草草草,某天手贱有java6升级为java7了,然后用ant打包发布,然后再一次草草草,居然有冲突勒,网上找了一堆...无果,最后想起直接在.bash_profile上配置环境试试吧,居然通了, ...

  8. Android工具类 DateUtil,可以用它方便的进行日期的操作

    本文转载自:http://blog.csdn.net/xuduzhoud/article/details/27526177 全部代码如下: DateUtil.java package com.exam ...

  9. [Android Pro] 由模块化到组件化(一)

    cp from : https://blog.csdn.net/dd864140130/article/details/53645290 在Android SDK一文中,我们谈到模块化和组件化,现在我 ...

  10. poj 1325 Machine Schedule 题解

    Machine Schedule Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 14479   Accepted: 6172 ...