我有超类( ArticleSummary )和子类(文章)。
在控制器中,我收到 ArticleSummary 类型的列表。
我的要求是我想要对列表进行排序,其中一些属性(比如 id )属于ArticleSummary,而某些属性(比如日期,状态 ...)属于制品
任何机构都可以建议我如何达到这个要求。
我想使用比较器,否则在java中有这种要求的最佳方法。
先谢谢。
答案 0 :(得分:1)
如果您有ArticleSummary
个对象的列表,则无法访问Article
个字段。如果您的列表实际包含Article
个对象,那么在Article类中实现compareTo
并按super.id
进行比较应该有效。
请记住Article
是ArticleSummary
,但ArticleSummary
不是Article
s
答案 1 :(得分:0)
您可以实施Comparable界面(见下文),然后当您拥有list
ArticleSummary
个Collections.sort(list);
个对象时,可以使用class ArticleSummary implements Comparable<ArticleSummary> {
@Override
public int compareTo(ArticleSummary o) {
//here this is of class ArticleSummary
//so you can compare only fields of the class ArticleSummary
//no matter what object o is
return 0;
}
}
class Article extends ArticleSummary {
@Override
public int compareTo(ArticleSummary o) {
if (o instanceof Article) {
//here both this and o are of class Article
//so you can compare fields of both classes ArticleSummary and Article
Article otherArticle = (Article) o; //to use other object as an Article
return 0;
} else {
//here this is of class Article but o is of class ArticleSummary
//therefore you can only compare fields of class ArticleSummary
return 0;
}
}
}
这里是实现接口的代码:
{{1}}