java 中多个 类 的通用类型
generic Type of multiple classes in java
如何实现将一个class的泛型类型构建到多个类?
一个例子是 Number 和 Boolean 的 subclasses。
如果我对你的问题的理解正确,其中一种选择是创建额外的类似枚举的 class 实例数量有限:
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;
}
}
现在您的 class 可以这样声明:
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
个对象。
如何实现将一个class的泛型类型构建到多个类? 一个例子是 Number 和 Boolean 的 subclasses。
如果我对你的问题的理解正确,其中一种选择是创建额外的类似枚举的 class 实例数量有限:
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;
}
}
现在您的 class 可以这样声明:
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
个对象。