Vin*_*gla 3 java enums hashmap
我有一个接口名称类型
public interface Types
{
public String getName();
}
Run Code Online (Sandbox Code Playgroud)
两个枚举类正在扩展这个界面
public enum AlphaTypes implements Types
{
Alpha("alpha"),Common("common")
private String name;
private AlphaTypes(String name)
{
this.name = name;
}
@Override
public String getName()
{
return name;
}
}
public enum BetaTypes implements Types
{
Beta("beta"),Common("common")
private String name;
private BetaTypes(String name)
{
this.name = name;
}
@Override
public String getName()
{
return name;
}
}
Run Code Online (Sandbox Code Playgroud)
要求是有一个地图,类型为关键字 Map<Types,Object> map;
如何实现equals和hashcode,这样即使对于常见的枚举值,映射键也是唯一的?
该类java.lang.Enum声明both equals()和hashCode()as final,因此你会在尝试覆盖它们时遇到编译器错误.
话虽这么说,你的榜样,你的愿望上述作品-如果你添加AlphaTypes.Common和BetaTypes.Common一个Map你会得到一个地图两个元素:
public static void main( String[] args ) throws Exception
{
Map<Types,Object> map = new HashMap<Types,Object>();
map.put( AlphaTypes.Common , "b" );
map.put( BetaTypes.Common , "b" );
System.out.println( "size=" + map.size());
}
Run Code Online (Sandbox Code Playgroud)
大小= 2
干杯,