我们是在列表中有损坏的数据X的情况下,并且此损坏的数据X的存在会阻止对与X相同类型的Y数据进行操作。这是不正常的,我们必须屏蔽代码,以使损坏的数据X的存在不会阻止其他有效数据的使用。
我在操作过滤器中使用了Optional,如果名称为null,则跳过过滤器。
Personne personne = null;
String name= personne.getName();
try {
Optional<Personne> abstractPersonne=
APIPersonne.getAllPersonne(currentPersonne.getMethod())
.stream()
.filter(e -> e.getName() != null && e.getName().equals(name))
.findAny();
if (abstractPersonne.isPresent())
personne= abstractPersonne.get();
}
是否有避免(e-> e.getName!= null)的测试的方法?
如果确定变量“名称”是空安全的,请颠倒条件。例如,代替
e.getName().equals(name)
使用
name.equals(e.getName())
反转条件:name.equals(e.getName())
.filter(e -> name.equals(e.getName()))
您可以像这样使用Optional.ofNullable(T)进行检查
Optional<Personne> abstractPersonne = APIPersonne
.getAllPersonne(currentPersonne.getMethod())
.stream()
.filter(e -> Optional.ofNullable(e).isPresent() && e.getName().equals(name))
.findAny();
if (abstractPersonne.isPresent())
personne= abstractPersonne.get();