当前位置: 首页 > 面试题库 >

包含其他注释的注释成员?

仉嘉泽
2023-03-14
问题内容

我想创建一个自定义注释(使用Java),该注释将接受其他注释作为参数,例如:

public @interface ExclusiveOr {
    Annotation[] value();
}

但这会导致编译器错误“注释成员的类型无效”。

Object []也无效。

有什么方法可以做我想要的吗?


问题答案:

我本人就此提出针对此问题的解决方法:

好吧,我想要实现的是这样的:

@Contract({
    @ExclusiveOr({
        @IsType(IAtomicType.class),
        @Or({
            @IsType(IListType.class),
            @IsType(ISetType.class)
        })
    })
})

拟议的解决方法:

用以下方法定义一个无参数构造函数的类(稍后将由您自己的注释处理器调用):

final class MyContract extends Contract{
    // parameter-less ctor will be handeled by annotation processor
    public MyContract(){
        super(
            new ExclusiveOr(
                new IsType(IAtomicType.class),
                new Or(
                    new IsType(IListType.class),
                    new IsType(ISetType.class)
                )
            )
        );
    }
}

用法:

@Contract(MyContract.class)
class MyClass{
    // ...
}


 类似资料:
  • 我想做如下事情:- 我想将AnnotationImplementationClass与被注释的类隔离开来,这样我就可以打包和分发自定义注释及其实现,从而允许开发人员使用@MyCustomAnnotation注释他们自己的spring boot应用程序类。 限制条件是我不知道Spring Boot类(在本例中为Application.java)的类名,显然我无权访问该类来修改它。我必须在运行时以某种

  • 问题内容: 我阅读了有关的Javadoc 。 但是我不明白这个注释是什么意思? 你能清楚说明一下吗? 问题答案: 当你使用Java代码(而不是XML)配置Spring应用程序时,用于启用Spring MVC。如果你还不熟悉Spring对Java配置的支持,那么这是一个不错的起点。 等效于XML。它支持对带注释的类的支持,该类用于将传入的请求映射到某个方法。你可以在参考文档中阅读有关其默认配置以及如

  • 我有一个第三方域对象,我希望使用Jackson将其序列化为JSON。这里有很多可以通过公共getters访问的属性,但是我只对其中很小的一部分感兴趣。由于这是第三方对象,所以我选择了mixin路线。然而,除了mixin接口上定义的那些之外,我找不到一个好方法来排除原始类中的所有内容。我试图在mixin类上指定@JsonIgnoreProperties,但是它很快失去控制,忽略了大量的属性。有什么解

  • 在这种情况下,NotNull-annotation有什么意义?

  • 我正在使用注释处理器来处理方法参数的注释。 用于参数的注释类型有一个注释@参数 现在,当注释处理器运行时,我想检查参数注释()是否有参数注释。我通过执行以下代码来实现这一点。 由于某种原因,arg始终为空。是否有注释未返回的原因?