Java 通过注释定义类型/格式验证?

Java 通过注释定义类型/格式验证?,java,Java,我有一个应用程序,它将静态方法与用户输入的命令相关联。它使用注释来描述命令基础: @Command(aliases = { "mailbox","mx" }, desc = "Package mailbox command", min = 0, max = -1) public static void mailbox( final CommandSender sender, final CommandArguments args ){ // stuff } 我希望改进参数解析功能,并允许开发人

我有一个应用程序,它将静态方法与用户输入的命令相关联。它使用注释来描述命令基础:

@Command(aliases = { "mailbox","mx" }, desc = "Package mailbox command", min = 0, max = -1)
public static void mailbox( final CommandSender sender, final CommandArguments args ){
// stuff
}
我希望改进参数解析功能,并允许开发人员为用户可能需要键入的参数提供一些类型/格式验证程序

注释对我来说还是相当新的,但我想大致如下:

@CommandArguments({
    @Arg( name = "currency", type = Float.class ),
    @Arg( name = "description", type = String.class ),
    @Arg( name = "username", validator = Somecustomvalidator )
});
然而,我意识到注释不是为泛型设计的。有没有一种方法可以通过注释实现这一点?有什么更好的选择


我的代码使用的是用户输入的
字符串[]
,这基本上就是提供给开发人员可能提供的“命令执行器”的参数。

我不确定“注释不是为泛型设计的”是什么意思。虽然泛型显然不适用于注释属性中允许的大多数类型,允许使用泛型类值。例如和。您的示例可能有
validator=Somecustomvalidator.class
,并且注释属性可以声明为
ClassYou's right,我正在阅读的信息似乎提出了其他建议。有没有办法允许该属性为空?并非所有注释都需要定义验证器。属性的值不能为null,但可以将特殊类定义为“伪null”值。由于注释类在技术上是一个接口,因此它可以包含一个嵌套的静态类。例如XmlElement表示法,其默认值为。XmlElement.DEFAULT类本质上是一个占位符,表示未指定任何值。