2015-10-01 52 views
-3

如何才能实现将一个类的泛型类型化为多个calsses? 一个例子是Number和Boolean的子类。generic java中的多个类的类型

+0

您如何期望使用这个通用参数?为了澄清你的问题,请写一个代码示例(可能使用你想要的一些不存在的语言结构)。 –

+0

了解接口和多态,以及JDK具有Object类的方式,它是JDK中存在的或您自己创建的所有其他类的超类。因此,在接收方法参数或创建不同类型的集合时,Object类可以充当泛型类型。 –

回答

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对象。