Groovy 注释中的默认数组值

Default array value in Groovy annotation

我有像这样的枚举和注释:

enum Permission { user, superuser, admin }

@CompileStatic
@interface Anno {
  Permission[] value
}

现在我想为 value 提供一个默认值,它应该是 [ Permission.user ]

我尝试了不同的 groovy 技巧:

  Permission[] value default [user]
  Permission[] value default ([user] as Permission[])
  Permission[] value default (Permission[])[user]
  ...

但其中 none 有效,因此作为一种解决方法,我在 j4v4 中实现了注释:

public @interface Anno {
  Permission[] value default { user };
}

我错过了什么?

更新:

解决方案是从注释中删除 @CompileStatic。 使用 @CompileStatic 编译抛出:

[Static type checking] - Cannot return value of type java.util.List <io.domain.Permission> on method returning type io.domain.Permission[]

这是一个当前的命名限制,应该被删除,但现在您需要:

Permission[] value() default [Permission.user]

或在您使用 user 之前:

import static Permission.user

然后您的原件(添加了缺少的括号)就可以了:

Permission[] value() default [user]