java - 抽象枚举一个注解属性类型

标签 java enums annotations interface

我有一个多个枚举正在实现的接口(interface),即

public interface MinorCodes {
    public abstract int code();
    public abstract String description();
}

public enum IdentityMinorCodes implements MinorCodes {
    IDENTITY_UPLOAD_PICTURE_CODE(1, "Error while trying to upload a picture."),
}

现在我想要一个自定义注释,它的值类型是这些具体枚举值之一,即

public @interface PokenService {
    MinorCodes[] exceptions();
}

但是我当然不能在这里返回接口(interface)。

有人知道这个问题的任何解决方案或解决方法吗?

提前致谢。

最佳答案

您可以创建一个附加枚举来包装所有 MinorCodes 枚举值:

public enum MinorCodesWrapper {
    IDENTITY_UPLOAD_PICTURE_CODE(IdentityMinorCodes.IDENTITY_UPLOAD_PICTURE_CODE),
    SOME_CODE(AnotherMinorCodes.SOME_CODE);

    private final MinorCodes _wrapped;

    MinorCodesWrapper(MinorCodes wrapped) {
        _wrapped = wrapped;
    }

    public MinorCodes getWrapped() {
        return _wrapped;
    }
}

public @interface PokenService {
    MinorCodesWrapper[] exceptions();
}

不漂亮,但有效;)

关于java - 抽象枚举一个注解属性类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1791228/

相关文章:

Java对象锁等于或同步等于? (对哈希码也有效)

java - 划分 BigDecimals 时保留中间结果的最大精度

java - [java.lang.ArrayIndexOutOfBoundsException : Index 2 out of bounds for length 2]

objective-c - Objective-C VS C 中的枚举

java - Spring MVC 如何转换 @RequestParam 值?

java - 将注释数组传递到另一个注释时出现错误 "Missing statement for annotation"

java - 如何使用 Java 通过 Web 服务以 JSON 格式公开数据?

java - 如何在没有 "0x00007fffe0dde513 in ?? ()"的情况下生成有效的 JDK9 调试版本?

具有多个字符串值的 typescript 枚举

android - 带有按钮的 skobbler (skmaps) 注释