java注解Annotation的使用实例
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的使用实例的更多相关文章
- 深入JAVA注解-Annotation(学习过程)
JAVA注解-Annotation学习 本文目的:项目开发过程中遇到自定义注解,想要弄清楚其原理,但是自己的基础知识不足以支撑自己去探索此问题,所以先记录问题,然后补充基础知识,然后解决其问题.记录此 ...
- 深入学习JAVA注解-Annotation(学习过程)
JAVA注解-Annotation学习 本文目的:项目开发过程中遇到自定义注解,想要弄清楚其原理,但是自己的基础知识不足以支撑自己去探索此问题,所以先记录问题,然后补充基础知识,然后解决其问题.记录此 ...
- Java - 注解 (Annotation)
Java - 注解 (Annotation) 一.基本的 Annotation > 使用 Annotation 时要在其前面增加 @符号,并把该 Annotation 当成一个修饰符 ...
- Java注解Annotation(一)
Java注解Annotation(一)——简介 这一章首先简单介绍一下注解,下一章会给出一个注解应用的DEMO. 1. 元注解 元注解的作用是负责注解其他的注解. JDK1.5中,定义了4个标准的me ...
- Java注解(Annotation)详解
转: Java注解(Annotation)详解 幻海流心 2018.05.23 15:20 字数 1775 阅读 380评论 0喜欢 1 Java注解(Annotation)详解 1.Annotati ...
- Java注解Annotation与自定义注解详解
Java注解简介 开发中经常使用到注解,在项目中也偶尔会见到过自定义注解,今天就来探讨一下这个注解是什么鬼,以及注解的应用场景和如何自定义注解. 下面列举开发中常见的注解 @Override:用于标识 ...
- Java注解Annotation学习
学习注解Annotation的原理,这篇讲的不错:http://blog.csdn.net/lylwo317/article/details/52163304 先自定义一个运行时注解 @Target( ...
- java 注解Annotation
什么是注解? 注解,顾名思义,注解,就是对某一事物进行添加注释说明,会存放一些信息,这些信息可能对以后某个时段来说是很有用处的. java注解又叫java标注,java提供了一套机制,使得我们可以对 ...
- 秒懂,Java 注解 (Annotation)你可以这样学 - CSDN博客
https://blog.csdn.net/briblue/article/details/73824058 文章开头先引入一处图片. 这处图片引自老罗的博客.为了避免不必要的麻烦,首先声明我个人比较 ...
随机推荐
- eclipse中设置自定义文档签名(工具)
今天第一次认真学习eclipse的使用,看到自定义文档签名,步骤如下: 1.点击window->preferences->java->Code Style->Code Tem ...
- WordPress主题开发实例:显示最新发表文章
实现效果 制作网站的时候,想在页面左栏显示最新发表的文章,如: 一.先开启侧边栏工具,在functions.php加上 $args = array( 'name' => __( '分类侧边栏') ...
- java7 NIO2 watching service API
java7 NIO2新增了文件系统的相关事件处理API,为目录,文件新增修改删除等事件添加事件处理. package reyo.sdk.utils.file; import java.io.IOExc ...
- 用UIInterpolatingMotionEffect产生透视效果
用UIInterpolatingMotionEffect产生透视效果 效果 源码 https://github.com/YouXianMing/Animations // // MotionEffec ...
- mysql查询字段时实现左右补零
右补0:select RPAD(id,8,'0') as pad from tmp; 左补0:select LPAD(id,8,'0') as pad from tmp;
- Java泛型的一些限制
本文主要參考<Java编程思想(第4版)>的Java泛型章节,仅当一个简单的读书笔记. 和C++泛型对照,Java泛型仅仅是一种编译期间的擦拭机制. 这是因为考虑到和曾经的兼容而考虑的一种 ...
- COUNT DISTINCT ROW_NUMBER DENSE_RANK 以及对COUNT去重(非PARTITION)
1:COUNT DISTINCT SELECT COUNT(DISTINCT [QS_QuestionStem].Id) AS ReqCount1, ...
- npm速度过慢的解决方案
因为npm连接的数据源网站太慢,可以使用淘宝提供的npm数据源, npm config set registry https://registry.npm.taobao.org 使用NPM(Node. ...
- [转]使用mysql profiles 来查看sql 语句执行计划
From : http://blog.csdn.net/radkitty/article/details/4632289 要使用该功能,mysql的版本必须在5.0.37版本以上.否则只能使用expl ...
- Shell变量while循环内改变无法传递到循环外
转自: https://blog.csdn.net/shawhe/article/details/65631543 今天刷Leecode(192 Word frequency)时,遇到一个shell语 ...