Java解析注解

package com.itbuluoge.anno;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Test {

	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:"+uc.id()+" "+uc.description());
			}
		}

		for(int i:useCases)
		{
			System.out.println("Warning.."+i);
		}
	}

	public static void Case(Class<?> cl)
	{
		for(Method m:cl.getDeclaredMethods())
		{
			UseCase uc=m.getAnnotation(UseCase.class);
			if(uc!=null)
			{
				System.out.println("FOUND:"+uc.id()+" "+uc.description());
			}
		}
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//List<Integer> useCases=new ArrayList<Integer>();
		//Collections.addAll(useCases, 41,42);
		//trackUseCases(useCases,Testable.class);

		Case(Testable.class);
	}

}

package com.itbuluoge.anno;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.junit.Test;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@interface UseCase
{
	public int id();
	public String description() default "no des";
}

public class Testable {

	@UseCase(id=19,description="中国人")
	public void say()
	{

	}

	@UseCase(id=19)
	public void listen()
	{

	}
}

输出结果

时间: 2024-12-21 14:14:20

Java解析注解的相关文章

java解析注解的简单例子

代码是根据慕课网的教程写的. 自定义类的注解: package com.immoc.test; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy

java之注解

  1.元注解   元注解是指注解的注解.包括  @Retention @Target @Document @Inherited四种. 1.1.@Retention: 定义注解的保留策略 @Retention(RetentionPolicy.SOURCE)   //注解仅存在于源码中,在class字节码文件中不包含 @Retention(RetentionPolicy.CLASS)  // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得, @Retention(Retent

转!java自定义注解

转自:http://blog.csdn.net/yixiaogang109/article/details/7328466  Java注解是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析和使用,起到说明.配置的功能.注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用.包含在 java.lang.annotation 包中. 1.元注解 元注解是指注解的注解.包括  @Retention @Target @Document @Inherited四种. 1.1.@Retention

全面解析注解

为什么要学习注解,学习注解有什么好处,学完能做什么? 1,能够读懂别人写的代码,特别是框架中的相关的代码. 2,让编程更加简洁,代码更加清晰 概念自己百度 java中常见的注解 ~常见注解(JDK注解) package 注解; public interface Person { public String name(); public int age(); @Deprecated//表示这个类中的方法已经过时了 public void sing(); } package 注解; public c

Java Android 注解(Annotation) 及几个常用开源项目注解原理简析

不少开源库(ButterKnife.Retrofit.ActiveAndroid等等)都用到了注解的方式来简化代码提高开发效率. 本文简单介绍下 Annotation 示例.概念及作用.分类.自定义.解析,并对几个 Android 开源库 Annotation 原理进行简析.PDF 版: Java Annotation.pdf, PPT 版:Java Annotation.pptx, Keynote 版:Java Annotation.key 完整版原文见:Java Android 注解(Ann

java中注解的使用与实例 (二)

java 注解,从名字上看是注释,解释.但功能却不仅仅是注释那么简单.注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据),常见的作用有以下几种: 生成文档.这是最常见的,也是java 最早提供的注解.常用的有@see @param @return 等 跟踪代码依赖性,实现替代配置文件功能.比较常见的是spring 2.5 开始的基于注解配置.作用就是减少配置.现在的框架基本都使用了这种配置来减

Java:注解(元数据)

初识Java注解 所谓的元数据是指用来描述数据的数据,可能刚听到元数据的时候你会有点陌生,其实任何一个使用过struts或者hibernate的开发人员都在不知不觉中使用元数据,更通俗一点来说元数据是指描述代码间关系或者代码与其它资源(例如数据库表)之间内在联系的数据,对Struts来说就是struts-config.xml文件,对hibernate来说就是.hbm文件. 但是现有的以xml或其它方式存在的元数据文件都有一些不便之处(如:与被描述的文件分离,不利于一致性维护). 基于元数据的广泛

【转】java中注解的使用与实例

原文:http://www.cnblogs.com/pepcod/archive/2013/02/20/2918719.html java 注解,从名字上看是注释,解释.但功能却不仅仅是注释那么简单.注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据),常见的作用有以下几种: 生成文档.这是最常见的,也是java 最早提供的注解.常用的有@see @param @return 等 跟踪代码依赖性

JAVA - Annotation 注解 入门

Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个教程当中,我们将学习Java的注解,如何定制注解,注解的使用以及如何通过反射解析注解. Java1.5引入了注解,当前许多java框架中大量使用注解,如Hibernate.Jersey.Spring.注解作为程序的元数据嵌入到程序当中.注解可以被一些解析工具或者是编译工具进行解析.我们也可以声明注解在编译过程或执行时产生作用. 在使用注解之前,程序源数据只是通过java注释和javadoc,但是注解提供的功能要远远超