空のロジックを交換すると判断場合は、Javaストリームのオプションの使用(JDK8上記)
あなたはこの記事のために非常に短いコードでビジネスロジックをチェックする文ヌルを置き換えることができ、そして時にNULLポインタ発生し、ログや他のアクションをヒットすることは容易です。
注意:ラムダ式とストリームJava8新機能は、それが基礎を行かせるという概念を理解することができますに慣れていない場合。
第1の方法は、確かにnullポインタエラーレポートになり、一般的な計画は、我々は判決を取る場合は追加することである)人は、getXXXメソッドを(呼び出して確認したオブジェクトがnullであるそのうちのいくつかPersonオブジェクトの多くに次のコードを一覧表示し、そうでない場合:
public class DemoUtils {
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
personList.add(new Person());
personList.add(null);
personList.add(new Person("小明",10));
personList.add(new Person("小红",12));
for (Person person : personList) {
//if判空逻辑
if (person != null) {
System.out.println(person.getName());
System.out.println(person.getAge());
}
}
}
static class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
}
実際には、Javaの新しいストリームAPIおよびオプションは、よりエレガントなアプローチを提供します。
濾過し、空のキュー・オブジェクトを使用して、ストリームAPIフィルタ、(オブジェクト::非NULL)はフィルタ手段は、リスト内の各要素のオブジェクトがNULL()メソッドに与える実行リターン保持、偽要素が除外され返さ真の要素。
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
personList.add(new Person());
personList.add(null);
personList.add(new Person("小明",10));
personList.add(new Person("小红",12));
personList.stream().filter(Objects::nonNull).forEach(person->{
System.out.println(person.getName());
System.out.println(person.getAge());
});
}
personListのアラームログがnullで再生するために必要なビジネスロジックは、エレガントなオプションを達成するために使用することができるならば、それ自体personList例としては、nullの場合もあります。
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
personList.add(new Person());
personList.add(null);
personList.add(new Person("小明", 10));
personList.add(new Person("小红", 12));
Optional.ofNullable(personList).orElseGet(() -> {
System.out.println("personList为null!");
return new ArrayList<>();
}).stream().filter(Objects::nonNull).forEach(person -> {
System.out.println(person.getName());
System.out.println(person.getAge());
});
}
コード
orElseGet(() -> {
//代替log
System.out.println("personList为null!");
return new ArrayList<>();
})
彼はpersonListがnullの場合、これら2つのコードの実装は、personListがnullのときはnullポインタエラーが報告されており、また、ログをヒットしていないときにようにリストは、要素が含まれていない返すと言いました。