类型转换

时间:2013-07-20 22:17:33

标签: java types

我有

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类型。)

2 个答案:

答案 0 :(得分:2)

有两种可能的解决方案:

  1. 在方法上定义泛型类型:

    public class MyClass{
        private HashMap<Key<?>, Val<?>> myMap;
        public <T> Val<T> getValue(Key<T> key){
            return (Val<T>) myMap.get(key) 
        }
    
  2. 在类上定义泛型类型:

    public class MyClass<T> {
        private HashMap<Key<?>, Val<?>> myMap;
        public Val<T> getValue(Key<T> key) {
           return (Val<T>) myMap.get(key);
        }
    }
    

答案 1 :(得分:0)

你在“像这样的东西”下的建议会正常运作。只需使用它。