注释元数据的Groovy字符文字?

时间:2015-10-08 12:14:06

标签: java groovy annotations

我想在Groovy中测试我的 Java 自定义注释,但由于char问题而没有管理它。

  

Groovyc:期待' a'是char类型的内联常量而不是@MyAnnotation

中的字段表达式

我知道groovy中的 char 被指定为

'a' as char

我的 Java 自定义注释

@Target({FIELD})
@Retention(RUNTIME)
@Documented
public @interface MyAnnotation {

    char someChar() default '#';

}

不能使用 Groovy 代码

class Foo {

    @MyAnnotation(someChar = 'a' as char)
    Object hoo

}

如果将char提取为常量,则它也不起作用。

1 个答案:

答案 0 :(得分:1)

这是一个棘手的问题......我发现工作的是:

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 groovy.transform.CompileStatic

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MyAnnotation {

    char someChar() default ('#' as char);

}

@CompileStatic
class Foo {

    @MyAnnotation(someChar =( (char)'a'))
    Object hoo

}

其中importart部分是注释定义中的as char(除非是Java而不是Groovy),注释用法中的char强制转换,而不是as char,而是强制转换制作该课程@CompileStatic。这似乎对我有用,但是如果你有权访问注释代码,你也可以把它改成一个String,因为我觉得我用String工作得更简单。