相关疑难解决方法(0)

如何用泛型实现枚举?

我有这样的通用接口:

interface A<T> {
    T getValue();
}
Run Code Online (Sandbox Code Playgroud)

此接口具有有限的实例,因此最好将它们实现为枚举值.问题是那些实例有不同类型的值,所以我尝试了以下方法,但它不编译:

public enum B implements A {
    A1<String> {
        @Override
        public String getValue() {
            return "value";
        }
    },
    A2<Integer> {
        @Override
        public Integer getValue() {
            return 0;
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

对此有何想法?

java generics enums interface

57
推荐指数
3
解决办法
6万
查看次数

如何通过枚举管理泛型?

我有一个参数化的界面:

public interface MyInterface<T> {
    void run(T e);
}
Run Code Online (Sandbox Code Playgroud)

和实现接口的类:

public class MyClass1 implements MyInterface<SomeOtherClass1> {
    public void run(SomeOtherClass1 e) {
        // do some stuff with e
    }
}

public class MyClass2 implements MyInterface<SomeOtherClass2> {
    public void run(SomeOtherClass2 e) {
        // do some stuff with e
    }
}
Run Code Online (Sandbox Code Playgroud)

不同的MyClass*X*的数量是已知且详尽的,并且每个MyClass*X*只有一个实例,所以我想使用枚举:

public enum MyEnum {
    MY_CLASS_1,
    MY_CLASS_2;
}
Run Code Online (Sandbox Code Playgroud)

为了能够使用MyEnum.MY_CLASS_1.run(someOtherClass1);例如(我会将MyInterface的每个实例放在同一个地方).甚至可能(如果是的话,如何)?因为我现在很困惑......


我还尝试了什么:

public enum MyEnum {

    MY_CLASS_1(new MyClass1()),
    MY_CLASS_2(new MyClass2());

    private MyInterface<?> instance;

    private MyEnum(MyInterface<?> instance) {
        this.instance = instance;
    }

    public …
Run Code Online (Sandbox Code Playgroud)

java generics enums

7
推荐指数
1
解决办法
171
查看次数

标签 统计

enums ×2

generics ×2

java ×2

interface ×1