【发布时间】:2018-05-07 13:24:03
【问题描述】:
比较两种产品时遇到问题。我想比较他们每个人的年份(可选)属性。但是只要这个属性为空,就会抛出一个 NPE。我认为使用 Comparator.nullsLast(..) 我可以处理空值......但似乎我要么误解了它的工作原理,要么代码有问题。我需要更改什么才能使这项工作对 null 友好?
@Override
public int compare(IProduct product1, IProduct product2) throws ProductComparisonException {
Comparator<IShopProduct> comparator =
Comparator.nullsLast(Comparator.comparing(IShopProduct::getVintage));
return comparator.compare((IShopProduct)product1.getProvidedProductData(),
(IShopProduct)product2.getProvidedProductData());
}
提前致谢
【问题讨论】:
-
product1.getProvidedProductData()是否有可能返回 null ? -
请查看标准 java 风格指南。如果人们不被特殊的造型问题分心,他们将更有可能帮助你。特别是不必要的空格和行太长的事实,我必须水平滚动
标签: java comparator comparable