我会以某种方式在 HashMap 中存储许多不同的类型,但在某种程度上,当我提取它们时,它们将是良好类型的(而不是对象)。
所以我考虑一个使用泛型的包装器
public class Value <T>
{
private T innerValue ;
public Value ( T _value )
{
innerValue = _value ;
}
public T read ()
{
return innerValue ;
}
}
但它不起作用,对于我所做的测试:
Value <Integer> va = new Value <Integer> ( 1 ) ;
Value vc = va ;
int restA = vc.read();
但我收到设计时错误,因为 vc.read() 将返回 Object() 而不是 Integer。 那么我应该怎么做才能避免这种行为呢? (如果可能的话,我希望有一个解决方案可以防止“va”丢失有关 T 的信息,而不是其他解决方法)
预先感谢您的帮助。
最佳答案
您将 va
转换为原始 Value
、vc
。当您使用类的原始形式时,您的 T
泛型类型参数将被 Object
替换。因此,您不能将 Object
分配给 int
。
如果您只调用va.read()
,那么它将返回一个Integer
,在赋值时它将被拆箱为int
到restA
。
关于Java : Class wrapper using generic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21393371/