在注解接口中使用UUID作为默认值

Use UUID in annotation interface as default value

可以在注解属性中使用UUID吗?我尝试在注释中添加 UUID 作为属性,如下所示,但它给了我错误 Attribute value must be constant.

@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {

    String name() default "";

    UUID guid() default UUID.random(); // there I have error
}

我也尝试了至少 null instad of random UUID 但同样的错误。

谢谢。

查看注释文档 (here's Wikipedia):

Return types are restricted to primitives, String, Class, enums, annotations, and arrays of the preceding types.

您可以将定义更改为

String guid() default UUID.random().toString();

感谢 Holger 指出:这也行不通。该错误告诉您该值必须是 constant,即根本不是方法调用。