摘要枚举注释属性类型

时间:2009-11-24 16:30:36

标签: java enums annotations 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();
}

但当然我不能在这里返回一个界面。

有人知道任何解决方案或解决方法吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以创建一个包含所有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();
}

不漂亮,但有效;)