`
qmzpanda
  • 浏览: 16237 次
  • 性别: 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
分享到:
评论

相关推荐

    Annotation手册

    当我们通过反射API访问Annotation时,会得到实现该接口的对象,从而获取成员信息。 4. **标准Annotation**:Java 5.0引入了三个标准Annotation,包括`@Override`、`@Deprecated`和`@ SuppressWarnings`。`@Override...

    使用Annotation和反射实现Bean转SQL语句Demo

    通过这个简单的示例,我们可以看到,结合Java的注解和反射功能,可以轻松地实现Bean到SQL语句的转换,大大简化了数据操作的代码,提高了代码的可读性和可维护性。在大型项目中,这样的工具或框架如MyBatis、...

    annotation

    在IT行业中,注解(Annotation)是Java编程语言的一个...通过自定义注解和对应的处理机制,我们可以实现代码的自动化处理、验证、配置等高级功能。在实际开发中,合理运用注解能够提高代码的可读性、可维护性和灵活性。

    利用 spring annotation AOP 反射 记录日志

    在IT行业中,Spring框架是Java开发中的核心工具之一,它为开发者提供了许多强大的功能,包括依赖注入、面向切面编程(AOP)等。本文将深入探讨如何利用Spring的注解式AOP和反射机制来实现日志记录,以便更好地理解和...

    Annotation详细介绍(大全)

    Annotation的本质是一种特殊类型的注解,它允许开发者向编译器、JVM或者工具提供关于代码的额外信息,比如接口实现、序列化、代码生成等。 1. **Annotation定义**: Annotation的定义格式通常为`public @interface...

    JDK5.0 Java Annotation 介绍(ppt)

    2. **自定义 Annotation**:除了预定义的 Annotation,开发者还可以定义自己的 Annotation 类型,并通过注解处理器来处理这些 Annotation,实现特定的功能。 3. **运行时可见性**:有些 Annotation 在编译时有效,...

    利用java反射、注解及泛型模拟ORM实现

    在Java编程中,反射、注解(Annotation)和泛型是三个非常重要的特性,它们各自在不同的场景下发挥着关键作用。这篇博文“利用java反射、注解及泛型模拟ORM实现”旨在探讨如何结合这三种技术来实现对象关系映射(ORM...

    自定义Annotation例子

    在Java编程语言中,Annotation(注解)是一种元...通过定义自己的注解,我们可以实现代码的元数据化,从而实现自动化、验证、监控等多种功能。理解并熟练掌握自定义Annotation的使用,对于提升Java开发能力至关重要。

    什么是Annotation?

    这样,我们就可以在运行时通过反射机制获取该方法上的`Loggable`注解信息,从而实现自动的日志记录功能。 #### 六、总结 Annotation作为Java 1.5版本的一个重要特性,极大地提高了代码的可读性和可维护性,同时也...

    JAVA简单的反射案例

    - 配置管理:Spring框架利用反射和Annotation实现依赖注入。 7. **注意事项与性能影响**: 尽管反射提供了强大的功能,但过度使用会导致代码复杂性增加,并可能影响性能,因为反射操作比直接调用方法更慢。因此,...

    javax.annotation-api-1.3.2 jar包.rar

    `javax.annotation-api-1.3.2.jar` 包是Java标准版(Java SE)中的一个关键组件,它包含了用于开发和实现注解的API。这个API主要用于提供一些预定义的注解,这些注解可以增强代码的功能性和可维护性,同时减少对传统...

    Java Annotation

    - **Spring Framework**:使用了多种注解来实现依赖注入、事务管理等功能。 - **Hibernate/JPA**:使用注解简化了实体映射的过程。 - **JUnit**:通过 `@Test`、`@Before`、`@After` 等注解来组织单元测试代码。 - *...

    java之Annotation及其应用

    在实际开发中,注解与反射相结合,可以实现动态配置、AOP(面向切面编程)、持久化框架等多个领域的重要功能。例如,Spring AOP通过分析`@Aspect`注解定义的切面,实现横切关注点的自动化处理。 总之,Java注解是...

    java annotation demo

    通过自定义注解和处理器,开发者可以扩展Java平台的功能,实现更灵活和模块化的代码设计。 总结来说,Java注解是增强代码可读性、简化代码维护和提高开发效率的重要工具。通过创建和使用注解,我们可以将元数据嵌入...

    javax.annotation

    这些元数据可以被编译器、JVM或其他工具读取,以实现诸如代码分析、代码生成、测试、性能监控等多种功能。常见的注解有@Override、@Deprecated等。 2. **JSR 305**:JSR(Java Specification Request)305是Java...

Global site tag (gtag.js) - Google Analytics