我有两个类,都具有int ID属性,并且我必须使此Comparator类两次以按ID对它们进行排序:
public class Class1Comparator implements Comparator<Class1> {
/**
* Comparator Constructor.
*/
public Class1Comparator() {
}
@Override
public int compare(Class1 arg0, Class1 arg1) {
return arg0.getId() - arg1.getId();
}
}
和除了Class2而不是Class1完全相同的所有东西都可以工作,但是有没有办法将它们合并到一个类中?
最佳答案
从包含通用ID的基类派生Class1
和Class2
,以及Comparator<BaseClass>
的单个实现。
例:
public class BaseClass
{
private int id;
//.
//.
//.
public static class CmpID implements Comparator<BaseClass>
{
@Override
public int compare(BaseClass a, BaseClass b) {
//Could be implemented null safe
return a.id - b.id;
}
}
}
编辑:您还可以实现一个通用接口,例如
public interface IdentifiableObject
{
int getId();
}
由
Class1
和Class2
使用。在这里,
Comparator<IdentifiableObject>
的单个实现也足够了。关于java - 一类中的两个比较器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15320982/