【发布时间】:2017-06-09 07:53:32
【问题描述】:
我有两个类扩展了一个父类,并且有一种方法可以通过某个参数对数据进行排序。因此,对于这两个类中的一个,我需要应用一些排序,但对于另外两个不做任何事情。有这种可能吗?
public class MedicalCompositeRatesData{
@Override
public List<RateTableData> buildData(RateTableInputBean inputBean)
{
SGQuotingData sgQuotingData = inputBean.getQuotingData();
List<ProductData> products = extractorFactory
.getProductExtractor(inputBean.getPlanType(), inputBean.getRatingType())
.extract(sgQuotingData);
List<Row> rates = products.stream()
.map(it -> buildRow(it, sgQuotingData))
.sorted(getProductComparator())
.filter(Objects::nonNull)
.collect(Collectors.toList());
return buildRateTables(rates);
}
protected Comparator<Product> getProductComparator(){
//should leave default sorting
}
}
public class AlternateCompositeRatesBuilder extends MedicalCompositeRatesData
{
protected Comparator<Product> getProductComparator(){
//will sort by rate
}
}
【问题讨论】:
-
当然,不要在其他两个类中实现排序方法。把它放在你需要的课堂上。
-
所以说“不实现排序”是指返回一些空比较器吗?
-
这里不完全清楚你想要实现什么,可能是一个更简单的例子,我们可以看看?一个不做任何事情的比较器,你的意思是不会排序?如果是这样,可能只是一直在那个返回
zero?从而使所有条目都相同 -
不知何故,在您的父类中,您只需将 Comparator 函数设为空..并在需要它的孩子中实现它..我什至看不到它的用途父类,如果 3 个孩子中只有一个会使用它
-
可能返回零应该可以。让我检查一下。
标签: java java-8 comparator