使用equals和hashCode方法的通用接口,是否可能?

时间:2017-01-17 15:45:57

标签: java

我想定义一个用于实现地图键的界面。该映射使用equals和hasCode来定位和比较键。我的密钥需要通过自定义计算覆盖它们。这就是我想要做的。使用复杂密钥非常重要。感谢

function addClass(el, className) {
  var classes = el.className.match(/\S+/g) || [];  

  if (!hasClass(el, className)) {
    classes.push(className);
  }
  el.className = classes.join(' ');
}

function hasClass(el, className) {
  var re = new RegExp('(^|\\s+)' + className + '(\\s+|$)');
  return re.test(el.className);
}

addClass(document.getElementById('dvText'), 'newStyle')

针对失败选民的编辑:我知道上述代码无效。我正在寻找实现接口的想法,以确保实现类使用泛型类型提供所需的方法。

1 个答案:

答案 0 :(得分:2)

你想要的东西在Java中是不可能的。对象已经实现了equalshashCode,因此每个子类也会自动执行。接口或抽象类无法重新实现它。假设对于该类正确实现了给定类的equalshashCode

如果您真的需要您的类来实现特定的比较操作,并且不想意外地使用现有的相等方法,您可以在您的接口上定义自己的比较函数,并且需要实现类来定义它们。已经在equals和hashCode方法中实现等式机制的类可以委托给现有的方法。