类型转换
我有类型转换
private HashMap<Key<?>, Val<?>> myMap;
在下一个指定key<T>
此映射总是val<T>
(相同T
)。我想创建一个使用这些信息的函数,并自动给我一个转换为给定类型的值。可能吗?事情是这样的:
public class MyClass{
private HashMap<Key<?>, Val<?>> myMap;
public Val<T> getValue(Key<T> key) {
return (Val<T>) myMap.get(key)
}
(类型T
没有在课堂上给出)
有两种可能的解决方案是:
-
定义的方法泛型类型:
public class MyClass{ private HashMap<Key<?>, Val<?>> myMap; public <T> Val<T> getValue(Key<T> key){ return (Val<T>) myMap.get(key) }
-
定义在类的泛型类型:
public class MyClass<T> { private HashMap<Key<?>, Val<?>> myMap; public Val<T> getValue(Key<T> key) { return (Val<T>) myMap.get(key); } }
你的建议下,“这样的事情”将正常工作。只要使用它。
它不起作用,因为T只能在类中定义。这里,每次执行函数时都必须定义T,而不是在编译期间。 –
你试过了吗?鉴于泛型的规则,我认为它会。 – tbodt
我有。 T类有问题。找不到符号T. –
@downvoters and close-voter:Please exp躺在。尼斯问题IMO。没有什么不清楚的,因为接受答案的存在证明了这一点。 +1 – EJP