HashMap不实现您的接口IParams,因此您不能将 aHashMap转换为IParams. 这与泛型无关。
IParams并且HashMap是“兄弟姐妹”,从实现或扩展的意义上说Map。但这并不意味着您可以将 aHashMap视为一个IParams。假设您要向IParams界面添加一个方法。
public interface IParams extends Map<String, String> {
void someMethod();
}
当然,someMethod不存在于HashMap. 如果强制转换 a HashMaptoIParams可行,那么如果您尝试调用该方法,您会期望发生什么?
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();