1、Description.java

  1. package kzfy.bk.com;
  2.  
  3. import java.lang.annotation.Documented;
  4. import java.lang.annotation.ElementType;
  5. import java.lang.annotation.Retention;
  6. import java.lang.annotation.RetentionPolicy;
  7. import java.lang.annotation.Target;
  8.  
  9. @Target(ElementType.TYPE)
  10. @Retention(RetentionPolicy.RUNTIME)
  11. @Documented
  12. public @interface Description {
  13. String value();
  14. }

2、Name.java

  1. package kzfy.bk.com;
  2.  
  3. import java.lang.annotation.Documented;
  4. import java.lang.annotation.ElementType;
  5. import java.lang.annotation.Retention;
  6. import java.lang.annotation.RetentionPolicy;
  7. import java.lang.annotation.Target;
  8.  
  9. //注意这里的@Target与@Description里的不同,参数成员也不同
  10. @Target(ElementType.METHOD)
  11. @Retention(RetentionPolicy.RUNTIME)
  12. @Documented
  13. public @interface Name {
  14. String originate();
  15. String community();
  16. }

3、MyTest.java

  1. package kzfy.bk.com;
  2.  
  3. @Description("我的第一个使用自定义注解的类!")
  4. public class MyTest{
  5. @Name(originate="空中飞鱼",community="java")
  6. public String getName(){
  7. return "java,我的人生路!";
  8. }
  9.  
  10. @Name(originate="博客园",community="写博客")
  11. public String getName2() {
  12. return "博客,新的征程!";
  13. }
  14. }

4、运行提取MyTest的类TestAnnotation.java

  1. package kzfy.bk.com;
  2.  
  3. import java.lang.reflect.Method;
  4. import java.util.HashSet;
  5. import java.util.Set;
  6.  
  7. public class TestAnnotation {
  8. /**
  9. * Annotation的API的用法请参见javaDoc文档
  10. */
  11. public static void main(String[] args) throws Exception {
  12. String CLASS_NAME ="kzfy.bk.com.MyTest";
  13. Class test = Class.forName(CLASS_NAME);
  14. boolean flag = test.isAnnotationPresent(Description.class);
  15. if(flag){
  16. Description des = (Description)test.getAnnotation(Description.class);
  17. System.out.println("描述:"+des.value());
  18. System.out.println("-----------------");
  19. }
  20.  
  21. //把JavaEyer这一类有利用到@Name的全部方法保存到Set中去
  22. Method[] method = test.getMethods();
  23. Set<Method> set = new HashSet<Method>();
  24. for(int i=0;i<method.length;i++) {
  25. boolean otherFlag = method[i].isAnnotationPresent(Name.class);
  26. if(otherFlag) set.add(method[i]);
  27. }
  28. for(Method m: set) {
  29. Name name = m.getAnnotation(Name.class);
  30. System.out.println("orginate:"+name.originate());
  31. System.out.println("community:"+name.community());
  32. }
  33. }
  34. }

如何使用java自定义注解?demo的更多相关文章

  1. Java自定义注解开发

    一.背景 最近在自己搞一个项目时,遇到可需要开发自定义注解的需求,对于没有怎么关注这些java新特性的来说,比较尴尬,索性就拿出一些时间,来进行研究下自定义注解开发的步骤以及使用方式.今天在这里记下, ...

  2. java自定义注解类

    一.前言 今天阅读帆哥代码的时候,看到了之前没有见过的新东西, 比如java自定义注解类,如何获取注解,如何反射内部类,this$0是什么意思? 于是乎,学习并整理了一下. 二.代码示例 import ...

  3. java自定义注解实现前后台参数校验

    2016.07.26 qq:992591601,欢迎交流 首先介绍些基本概念: Annotations(also known as metadata)provide a formalized way ...

  4. java自定义注解注解方法、类、属性等等【转】

    http://anole1982.iteye.com/blog/1450421 http://www.open-open.com/doc/view/51fe76de67214563b20b385320 ...

  5. java自定义注解知识实例及SSH框架下,拦截器中无法获得java注解属性值的问题

    一.java自定义注解相关知识 注解这东西是java语言本身就带有的功能特点,于struts,hibernate,spring这三个框架无关.使用得当特别方便.基于注解的xml文件配置方式也受到人们的 ...

  6. Java自定义注解的实现

    Java自定义注解的实现,总共三步(eg.@RandomlyThrowsException): 1.首先编写一个自定义注解@RandomlyThrowsException package com.gi ...

  7. Java自定义注解源码+原理解释(使用Java自定义注解校验bean传入参数合法性)

    Java自定义注解源码+原理解释(使用Java自定义注解校验bean传入参数合法性) 前言:由于前段时间忙于写接口,在接口中需要做很多的参数校验,本着简洁.高效的原则,便写了这个小工具供自己使用(内容 ...

  8. JAVA自定义注解 ------ Annotation

    日常开发工作中,合理的使用注解,可以简化代码编写以及使代码结构更加简单,下面记录下,JAVA自定义注解的开发过程. 定义注解声明类. 编写注解处理器(主要起作用部分). 使用注解. 相关知识点介绍, ...

  9. Java自定义注解和运行时靠反射获取注解

    转载:http://blog.csdn.net/bao19901210/article/details/17201173/ java自定义注解 Java注解是附加在代码中的一些元信息,用于一些工具在编 ...

随机推荐

  1. redshift编译遇到的错误(ubuntu14.04)

    1. ./bootstrap: 6: ./bootstrap: autopoint: not found 解决方法: $ sudo apt-get install autopoint 2. autor ...

  2. css013 构建基于浮动的布局

    css013 构建基于浮动的布局 基于浮动的布局时利用float属性是网页上的元素并排,并创建列 float有三个值:left .right .none 1.假设要把一张图片浮动到网页的左侧 .flo ...

  3. Linux下interface文件修改

    我们来通过一些例子,来记录interfaces文件的书写.详情可参照man interfaces. 设置常用ethernet参数 auto lo iface lo inet loopback # Th ...

  4. Flash Builder 4.7 破解

    http://litech.diandian.com/post/2013-03-22/40049178994 Adobe Flash Builder 4.7 For Mac 破解 和Photoshop ...

  5. LoadRunner 11 安装破解

    安装前的准备: 下载地址: A:安装介质 loadrunner-11.iso:http://yunpan.cn/cHN7JpYPi57wL (提取码:79f0) lm70.dll:http://yun ...

  6. Python-面向对象编程(一)

    初识面向对象: Python中一切皆对象,我自己,我的电脑,电脑桌,都称之为一个对象.对象是类的一个实体. 我们可以通过行为和特征(属性)来描述一个对象,比如小狗,它有四条腿,一个尾巴,两个虎牙,这就 ...

  7. Java多线程编程核心技术---拾遗增补

    线程状态验证 public class MyThread extends Thread { public MyThread() { System.out.println("构造方法中的状态: ...

  8. ActionScript学习笔记

    ActionScript学习笔记 ActionScript中预定义的数据类型:Boolean.int.Number.String.uint 其中,int.Number.uint是处理数字的.int用来 ...

  9. JS网页顶部进度条demo

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  10. mysql主从复制(超简单)

      mysql主从复制(超简单) 怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作:  1.1.版本一致  1.2.初始化表,并在后台启动mysql  ...