我有一个类TestMap
,只有静态方法(包括main
),用于测试Maps
。作为示例,类中有一个方法接受映射,键和值的类型分别表示为KeyType
和ValueType
,如下所示;
public static <KeyType,ValueType> void printMap( String msg, Map<KeyType,ValueType> m )
{
System.out.println( msg + ":" );
Set<Map.Entry<KeyType,ValueType>> entries = m.entrySet( );
for( Map.Entry<KeyType,ValueType> thisPair : entries )
{
System.out.print( thisPair.getKey( ) + ": " );
System.out.println( thisPair.getValue( ) );
}
}
我的问题是,如果我想重新编写这个类以便它可以实例化,而不是只包含静态方法,我怎样才能在类中定义一个可以与Map<KeyType, ValueType>
一起使用的映射?
我尝试按如下方式定义地图,但似乎无效。
private Map<KeyType, ValueType> internalMap;
有什么想法吗?
根据第一条评论,我试图添加到类定义,然后我按如下方式设置构造函数;
public class TestMap<KeyType, ValueType>
{
private Map<KeyType, ValueType> internalMap;
/*
* Constructor which accepts a generic Map for testing
*/
public <KeyType,ValueType> TestMap(Map<KeyType, ValueType> m)
{
this.internalMap = m;
}
}
但是,构造函数中的赋值是抛出一个错误,说它是一个Type Mismatch,并且它无法从java.util.Map转换为java.util.Map
答案 0 :(得分:2)
你的意思是:
class MyMap<KeyType, ValueType> {
private Map<KeyType, ValueType> internalMap;
}
编辑:您不需要构造函数上的类型参数:
class TestMap<KeyType, ValueType>
{
private Map<KeyType, ValueType> internalMap;
/*
* Constructor which accepts a generic Map for testing
*/
public TestMap(Map<KeyType, ValueType> m)
{
this.internalMap = m;
}
}
答案 1 :(得分:1)
您可以尝试声明internalMap
,但由于Map
是一个接口,您需要使用具体的类类型对其进行实例化(例如HashMap
,{{1}等等。)
TreeMap