Java Stream с исключением нулевого указателя - PullRequest
0 голосов
/ 11 февраля 2019

Я сталкиваюсь с исключением нулевого указателя в Java-потоке API

Моя модель Класс:

public class Member
    {
     String name;
     String age;
     String gender;

     public String getName() {
        return name;
     }

     public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
    }

ModelList Класс:

import java.util.List;

   public class MemberList {
   List<Member> member;
   int count;
    public List<Member> getMember() {
        return member;
    }

    public void setMember(List<Member> member) {
        this.member = member;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }
    }

Main.java

import java.util.*;
import java.util.stream.Collectors;

public class Main {

    public static void main( String[] args ) {

        MemberList list = new MemberList( );
        List< Member > memberList = new ArrayList<>( );
        for ( int i = 0; i < 10; i++ ) {
            Member member = new Member( );
            member.setAge( 10 + "" );
            member.setName( null );
            member.setGender( null );
            memberList.add( member );
        }
        Member member = null;
        memberList.add( member );
        Member m = new Member( );
        m.setGender( "MALE" );
        list.setMember( memberList );
        list.setCount( 10 );
        list.getMember( )
            .stream( )
            .filter( obj -> Objects.nonNull( obj ) )
            .filter( obj -> Objects.nonNull( obj.getGender( ) ) )
            .filter( obj -> obj.getGender( )
                               .equals( "MALE" ) )
            .collect( Collectors.toList( ) );
    }
}

Я знаю, если объект списка членов имеет значение null, означает, что stream дает исключение нулевого указателя, а также getGender равен нулю, что означает, что поток Java даетисключение нулевого указателя.Теперь мой вопрос: как обработать такого рода исключение нулевого указателя в Java

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Ваш мембранный список содержит экземпляр члена, который имеет значение null, и затем вы воздействуете на этот список в свой список переменных, поэтому ваш список содержит номер, который является ссылкой на нулевой указатель, извините за мой английский, я начинающий

0 голосов
/ 11 февраля 2019

NullPointerException (s) можно искоренить, буквально не допуская null значений в ваши объекты.

Вы боитесь, list.getMember() может вернуть null?
Примите некоторые меры предосторожности.

// Use annotations to mark that this method doesn't accept null
// Check for a possible null value

@NotNull
public List<Member> getMember() {
    return Collections.unmodifiableList(member);
}

public void setMember(@NotNull final List<Member> member) {
    this.member = member != null 
           ? new ArrayList(member)
           : Collections.emptyList();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...