`
qmzpanda
  • 浏览: 15916 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

反射根据annotation实现一些功能

 
阅读更多
  public void initGetter(ActionInvocation invocation) {
    HttpServletRequest request = ServletActionContext.getRequest();
    Class actionClass = invocation.getAction().getClass();
    Field[] fields = actionClass.getDeclaredFields();
    for (Field field : fields) {
      Annotation[] annotations = field.getDeclaredAnnotations();
      for (Annotation annotation : annotations)
        if (annotation instanceof GetterAndSetter) {
          GetterAndSetter getterAndSetter = (GetterAndSetter)annotation;
          field.setAccessible(true);
          try {
            Object value = field.get(invocation.getAction());
            request.setAttribute(field.getName(), value);
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
    }
  }

例子2:
/**
 * 
 */
package annotation;

import java.lang.annotation.Annotation;

import annotation.FirstTag.ALLNAME;

/**
 * @author Qianmz
 * @date Mar 26, 2010/11:10:56 PM
 */
public class TagClazz {
	
	@FirstTag(name="Qianmz",id=1000,lastName=ALLNAME.ZHAO)
	public void doExecute(){
		
	}
	
	public static void main(String[] args) {
		TagClazz tc = new TagClazz();
		try {
			Annotation[] ann = 
				tc.getClass().getMethod("doExecute").getAnnotations();
			for(Annotation an : ann){
				System.out.println(an.getClass());
				System.out.println(an.annotationType());
				System.out.println(((FirstTag)an).name());
				System.out.println(((FirstTag)an).id());
				System.out.println(((FirstTag)an).lastName());
			}
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			e.printStackTrace();
		}
	}
}
================================
result:
interface annotation.FirstTag
Qianmz
1000
ZHAO
0
0
分享到:
评论

相关推荐

    Java反射机制重点总结

    文章目录Java ReflectionJava反射机制提供的功能Java反射相关的主要APIjava.lang.Class类Class类的核心要点Class类的重要API实例实例化Class类对象(四种方法)创建类对象并获取类的完整结构获取Class对象后创建类的...

    模拟hibernate注解功能

    通过自定义注解,反射等技术实现hibernate注解功能。单元测试可以直接跑,代码里的注释写的很清楚,欢迎下载参阅!

    hibernate注解功能模拟

    自定义注解,反射拼装查询,模拟实现hibernate的注解功能原理

    自定义注解及注解处理器PPT+Demo

     Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。包含在 java.lang.annotation 包中。注解...

    Android代码-一个简易的Android事件通知库,

    一个简易的Android事件通知库,使用RxJava和Javassist设计,拒绝使用反射,保证性能高效稳定。 > 该项目是从RxUtil中分离出RxBus相关,并进行功能增强。如果你对RxJava的使用还不满足于RxBus, 你可以移步RxUtil和...

    基于Java的XML解析与反射设计模式.doc

    基于Java的XML解析与反射设计模式 摘要:随着计算机时代的蓬勃发展,internet的普及给社会以及人民的生活带来了巨 大的影响。与此同时,b/s结构的多系统相互访问技术应时代的发展也如雨后春笋般不断 涌现出来,相应...

    Java语言程序设计的课程设计项目——利用Java实现地球系动画完整实现实例(第3部分).pdf

    杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 1/15 页 1 1.1 利用 Java 实现地球系动画完整实现实例(第 3 部分) 1.1.1 进一步扩展程序加载图像文件 1、GUI 中显示...

    JAVA_API1.6文档(中文)

    javax.xml 根据 XML 规范定义核心 XML 常量和功能。 javax.xml.bind 为包含解组、编组和验证功能的客户端应用程序提供运行时绑定框架。 javax.xml.bind.annotation 定义将 Java 程序元素定制成 XML 模式映射的注释...

    java8源码-somethingnew:各种演示在这里

    简单实现IOC功能 主要涉及反射与自定义注解的使用 @Bean 用于对象的自动创建 @Autowired 用于自动注入 Aware接口 用于在创建对象时候自动调用里面的方法 stn-apt 注解处理器学习使用,基于javapoet框架实现类的创建...

    pads9.0电子设计软件

    与以往的旧产品相比, PADS 9.0修复和改善了之前版本软件的不足和缺点,集成了许多全新的功能,拥有了更高的可扩展性和集成度,从而使设计者能够结合Mentor Graphics众多独特的创新技术,实现设计、分析、制造和多...

    [Java参考文档].JDK_API 1.6

    org.omg.CORBA 提供 OMG CORBA API 到 JavaTM 编程语言的映射,包括 ORB 类,如果已实现该类,则程序员可以使用此类作为全功能对象请求代理(Object Request Broker,ORB)。 org.omg.CORBA_2_3 CORBA_2_3 包定义对 ...

    Java 1.6 API 中文 New

    org.omg.CORBA 提供 OMG CORBA API 到 JavaTM 编程语言的映射,包括 ORB 类,如果已实现该类,则程序员可以使用此类作为全功能对象请求代理(Object Request Broker,ORB)。 org.omg.CORBA_2_3 CORBA_2_3 包定义对 ...

    java api最新7.0

    org.omg.CORBA 提供 OMG CORBA API 到 JavaTM 编程语言的映射,包括 ORB 类,如果已实现该类,则程序员可以使用此类作为全功能对象请求代理(Object Request Broker,ORB)。 org.omg.CORBA_2_3 CORBA_2_3 包定义对 ...

    JDK_1_6 API

    org.omg.CORBA 提供 OMG CORBA API 到 JavaTM 编程语言的映射,包括 ORB 类,如果已实现该类,则程序员可以使用此类作为全功能对象请求代理(Object Request Broker,ORB)。 org.omg.CORBA_2_3 CORBA_2_3 包定义对...

    JavaAPI1.6中文chm文档 part1

    javax.xml 根据 XML 规范定义核心 XML 常量和功能。 javax.xml.bind 为包含解组、编组和验证功能的客户端应用程序提供运行时绑定框架。 javax.xml.bind.annotation 定义将 Java 程序元素定制成 XML 模式映射的注释...

    JavaAPI中文chm文档 part2

    javax.xml 根据 XML 规范定义核心 XML 常量和功能。 javax.xml.bind 为包含解组、编组和验证功能的客户端应用程序提供运行时绑定框架。 javax.xml.bind.annotation 定义将 Java 程序元素定制成 XML 模式映射的注释...

    [Java参考文档]

    javax.xml 根据 XML 规范定义核心 XML 常量和功能。 javax.xml.bind 为包含解组、编组和验证功能的客户端应用程序提供运行时绑定框架。 javax.xml.bind.annotation 定义将 Java 程序元素定制成 XML 模式映射的注释...

Global site tag (gtag.js) - Google Analytics