我希望使用这样的一个接口:
public interface ResultItem {
public int getConfidence();
public boolean equals(ResultItem item);
public ResultItem cloneWithConfidence(int newConfidence);
}
我已经使用不同类型的对象来表示语音识别结果。
我的想法是,我希望只比较相同类型的结果。也就是说,如果我创建一个实现ResultItem
接口的IntResult
类,我希望方法签名变为:
public boolean equals(IntResult item);
public IntResult cloneWithConfidence(int newConfidence);
我觉得我的界面存在设计缺陷,因为现在我在cloneWithConfidence和其他返回ResultItem的方法的结果上使用了相当丑陋的转换。
有更好的方法吗?
equals
方法中重复的检查语句if(this.getClass().isInstance(item)) return false;
而哭泣。 - DunarilObject.equals(Object other)
方法,以便equals
可以用于集合等。忘记你的专门版本吧,它可能更好,但没有任何地方使用(除了你明确调用的地方)。通过编写专门版本,你有遗忘编写覆盖版本的风险。 - maaartinus