枚举作为泛型类型并用于某些注释

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了枚举作为泛型类型并用于某些注释相关的知识,希望对你有一定的参考价值。

我希望子类将特定的枚举值传递给extends中的父类,这样这些特定的枚举值将在某些注释中的父类中使用。以下是我想要实现的目标。

public enum SomeEnum {
    VAL1, VAL2;
}

public @interface SomeAnnotation {
    SomeEnum someValue();
}

//below starts all fuzzy things : I want a specific value of enum 
public class parent<FetchType> {// not sure what exactly should write between  < >

    // below,at someValue I want the specific enum passed by child , means
    // the value passed between < and > 
    @SomeAnnotation(someValue = null /* here  should be the specific enum value passed 
    as type parameter of this class */) 
    private String someString;
        //getter-setter
}
//as i said , for child1 , i need SomeEnum.VAL1 to be passed to parent and
// SomeEnum.VAL2 for child2.
public class child1 extends parent<SomeEnum.VAL1>{}
public class child2 extends parent<SomeEnum.VAL2>{}
答案

我会走出去,并建议你不需要Enumannotations,但也许类似下面的内容?

interface NotEnum  {
  interface Val1 extends NotEnum {}
  interface Val2 extends NotEnum {}
}

class Parent<T extends NotEnum> {...}

class Child1 extends Parent<NotEnum.Val1> {...}
class Child2 extends Parent<NotEnum.Val2> {...}

以上是关于枚举作为泛型类型并用于某些注释的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中使用枚举作为泛型类型参数 [重复]

通过泛型类中嵌套枚举的反射获取枚举值

泛型和枚举

如何将枚举泛型类型的变量转换为 int 并返回

如何使用泛型作为枚举的键

泛型和枚举