将 "Map<UUID, String>" 界面替换为更简单的 "IMap"
Replace a "Map<UUID, String>" interface for a simpler "IMap"
我有一些代码使用这样的地图:
Map<UUID, String> object = new Hashmap<UUID, String>();
而且效果很好。但是,由于我必须在代码的其他部分使用相同的定义,所以我编写了这个接口:
interface IMap extends Map<UUID, String>{
}
想法是写 IMap
比 Map<UUID, String>
更简单。
无论如何,这不起作用:
IMap object = new HashMap<UUID, String>();
编译器的错误信息是:
Type mismatch: cannot convert from HashMap<UUID,String> to IMap
我认为,作为 IMap
扩展 Map<UUID, String>
,这会奏效,但不行。有没有办法进行替换?
这种方式类型推断不行。 IMap
是否扩展 Map
.
并不重要
如果具体实现没有实现 IMap
接口(而 java.util.collection.HashMap
没有),你根本无法将它分配给 IMap
接口。
这不起作用,因为 HashMap
没有实现您的 IMap
接口 - 因此您不能将 HashMap
分配给 IMap
.[=16 类型的变量=]
您可以创建一个 class(不是接口)来扩展 HashMap
:
class XMap extends HashMap<UUID, String> { }
XMap map = new XMap();
(就我个人而言,我不喜欢滥用继承只是为了给一些更方便的名称,但这可能是一个意见问题 - Java 没有其他机制可以做到这一点) .
我有一些代码使用这样的地图:
Map<UUID, String> object = new Hashmap<UUID, String>();
而且效果很好。但是,由于我必须在代码的其他部分使用相同的定义,所以我编写了这个接口:
interface IMap extends Map<UUID, String>{
}
想法是写 IMap
比 Map<UUID, String>
更简单。
无论如何,这不起作用:
IMap object = new HashMap<UUID, String>();
编译器的错误信息是:
Type mismatch: cannot convert from HashMap<UUID,String> to IMap
我认为,作为 IMap
扩展 Map<UUID, String>
,这会奏效,但不行。有没有办法进行替换?
这种方式类型推断不行。 IMap
是否扩展 Map
.
如果具体实现没有实现 IMap
接口(而 java.util.collection.HashMap
没有),你根本无法将它分配给 IMap
接口。
这不起作用,因为 HashMap
没有实现您的 IMap
接口 - 因此您不能将 HashMap
分配给 IMap
.[=16 类型的变量=]
您可以创建一个 class(不是接口)来扩展 HashMap
:
class XMap extends HashMap<UUID, String> { }
XMap map = new XMap();
(就我个人而言,我不喜欢滥用继承只是为了给一些更方便的名称,但这可能是一个意见问题 - Java 没有其他机制可以做到这一点) .