Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中多个类的泛型类型_Java_Generics_Type Bounds - Fatal编程技术网

java中多个类的泛型类型

java中多个类的泛型类型,java,generics,type-bounds,Java,Generics,Type Bounds,如何实现将类的泛型类型绑定到多个cals? 例如Number和Boolean的子类。如果我正确理解了您的问题,其中一个选项是创建具有有限实例数的其他类似enum的类: public final class ValueType<T> { public static final ValueType<Boolean> BOOLEAN = new ValueType<>(Boolean.class); public static final Value

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

如果我正确理解了您的问题,其中一个选项是创建具有有限实例数的其他类似enum的类:

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;
    }
}
公共最终类值类型{
公共静态最终值类型布尔=新值类型(BOOLEAN.class);
public static final ValueType INTEGER=新的ValueType(INTEGER.class);
私人期末班;
私有价值类型(类别分类){
this.clazz=clazz;
}
公共类getType(){
回击声;
}
}
现在您的类可以这样声明:

public class MyClass<T> {
    public MyClass(ValueType<T> type) {
        Class<T> clazz = type.getType();
    }
}
公共类MyClass{
公共MyClass(ValueType){
类clazz=type.getType();
}
}
所以你可以像这样实例化它

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

MyClass c=新的MyClass(ValueType.INTEGER);

但是您没有其他选项,因为您没有其他
ValueType
对象。

您希望如何使用此通用参数?为了澄清您的问题,请编写一个代码示例(可能使用您想要的一些不存在的语言构造)。阅读有关接口和多态性的内容,顺便说一下,JDK有一个对象类,它是JDK中所有其他类或您自己创建的类的超类。因此,在接收方法参数或创建不同类型的集合时,对象类可以充当泛型类型。
MyClass<Integer> c = new MyClass<>(ValueType.INTEGER);