gpt4 book ai didi

java - 如何为枚举类实现 equals 和 hashcode

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:46:26 26 4
gpt4 key购买 nike

我有一个接口(interface)名称类型

public interface Types
{
public String getName();
}

两个枚举类正在扩展这个接口(interface),如

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;
}
}

要求是有一个以类型为键的映射喜欢Map<Types,Object> map;

如何实现 equals 和 hashcode,使得映射键即使对于常见的枚举值也是唯一的?

最佳答案

java.lang.Enumequals()hashCode() 声明为 final,因此你会得到试图覆盖它们的编译器错误。

话虽如此,您上面的示例可以按您的意愿工作 - 如果您将 AlphaTypes.CommonBetaTypes.Common 添加到 Map 中,您'将得到一个包含两个元素的 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());
}

size=2

干杯,

关于java - 如何为枚举类实现 equals 和 hashcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23262509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com