代码之家  ›  专栏  ›  技术社区  ›  Riduidel

Groovy的AnnotationNode和Java的annotation有什么区别?

  •  0
  • Riduidel  · 技术社区  · 14 年前

    @Id , @Child @Parent ). 下面是我使用的代码类型的示例:

        @Override
        public <T extends Annotation> T getAnnotation(Class<T> annotationClass) {
            return mapped.getAnnotation(annotationClass);
        }
    

    在哪里? mapped Field (因此 getAnnotation(Annotation)

    我已经知道,使用Groovy,我必须用 MetaProperties . 然而,考虑到这些注释的使用,我面临一个问题,因为groovy处理这些注释的方式似乎与Java非常不同。

    1 回复  |  直到 13 年前
        1
  •  0
  •   Dave Smith    14 年前

    我不确定注释节点。根据里面的包裹,我想这和 AST Transformations .

    无论如何,您的代码在Groovy中的工作方式应该与Java相同。我在Groovy中使用JPA,并通过Java反射访问了注释。如果你有特殊问题,请提供更多细节。

    下面是一个小的Groovy脚本,演示如何访问bean属性并获取其注释。

    import java.lang.reflect.*
    
    class Person {
    
      @Deprecated
      String name
    
    }
    
    def me = new Person(name:'dave')
    
    assert me.name == 'dave'
    assert me.'name' == 'dave'
    assert me.getName() == 'dave'
    
    assert Person.class.getDeclaredField('name') instanceof Field
    assert Person.class.getDeclaredField('name').getAnnotations()
    assert Person.class.getDeclaredField('name').getAnnotation(Deprecated.class)