-3

如何实现将一个类的泛型类型绑定到多个类?一个例子是 Number 和 Boolean 的子类。

4

1 回答 1

1

如果我正确理解您的问题,其中一个选项是创建具有有限实例数量的额外类枚举:

public final class ValueType<T> {
    public static final ValueType<Boolean> BOOLEAN = new ValueType<>(Boolean.class);
    public static final ValueType<Integer> INTEGER = new ValueType<>(Integer.class);

    private final Class<T> clazz;

    private ValueType(Class<T> clazz) {
        this.clazz = clazz;
    }

    public Class<T> getType() {
        return clazz;
    }
}

现在你的类可以这样声明:

public class MyClass<T> {
    public MyClass(ValueType<T> type) {
        Class<T> clazz = type.getType();
    }
}

所以你可以像这样实例化它

MyClass<Boolean> c = new MyClass<>(ValueType.BOOLEAN);

或者

MyClass<Integer> c = new MyClass<>(ValueType.INTEGER);

但是你没有其他选择,因为你没有其他ValueType对象。

于 2015-10-01T12:33:49.073 回答