Java 有equals和hashCode方法的通用接口,可能吗?

Java 有equals和hashCode方法的通用接口,可能吗?,java,Java,我想定义一个用于实现映射键的接口。映射使用equals和hasCode来定位和比较键。我的密钥需要用自定义计算覆盖这些。这是我想做的。使用复合键很重要。谢谢 public interface CachedRequestKey<T>{ public T complexKeyObject; @Override public boolean equals(T obj); } 公共接口CachedRequestKey{ 公共T复合键对象; @凌驾 公共布尔等于(

我想定义一个用于实现映射键的接口。映射使用equals和hasCode来定位和比较键。我的密钥需要用自定义计算覆盖这些。这是我想做的。使用复合键很重要。谢谢

public interface CachedRequestKey<T>{
    public T complexKeyObject;

    @Override
    public boolean equals(T obj);

}
公共接口CachedRequestKey{
公共T复合键对象;
@凌驾
公共布尔等于(T obj);
}

为落选选民编辑:我知道上面的代码无效。我正在寻找实现一个接口的想法,确保实现类使用泛型类型提供所需的方法。

您想要的在Java中是不可能的。对象已经实现了
equals
hashCode
,所以每个子类也会自动实现。接口或抽象类无法要求重新实现它。假定给定类的
等于
hashCode
对于该类是正确实现的


如果您确实需要类来实现特定的比较操作,并且不希望意外地使用现有的相等方法,那么您可以在接口上定义自己的比较函数,并要求实现类来定义这些函数。已经在equals和hashCode方法中实现了相等机制的类可以委托给现有方法。

接口默认不包含实现,并且不能表示其他对象状态。也许您想要一个用于关键对象的decorator类?请澄清。您的
equals
方法没有正确重写
对象#equals
,因此无法像您预期的那样工作。您可以包装对象并保留附加状态。集合类不会使用自定义的equals/hashCode方法,除非集合是用比较器(比如TreeMap)定义的。