HashMap
不实现您的接口IParams
,因此您不能将 aHashMap
转换为IParams
. 这与泛型无关。
IParams
并且HashMap
是“兄弟姐妹”,从实现或扩展的意义上说Map
。但这并不意味着您可以将 aHashMap
视为一个IParams
。假设您要向IParams
界面添加一个方法。
public interface IParams extends Map<String, String> {
void someMethod();
}
当然,someMethod
不存在于HashMap
. 如果强制转换 a HashMap
toIParams
可行,那么如果您尝试调用该方法,您会期望发生什么?
IParams params = (IParams) new HashMap<String,String>();
// What's supposed to happen here? HashMap doesn't have someMethod.
params.someMethod();
关于您的评论:
目的是创建一个隐藏泛型的接口,并保存(未在示例中显示)映射键字符串定义
您可以做的是创建一个实现IParams
和扩展的类HashMap
:
public class Params extends HashMap<String, String> implements IParams {
// ...
}
IParams params = new Params();