1

I am facing null pointer exception in java stream api

My Model Class:

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 Class:

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( ) );
    }
}

I know if Member list object is null means stream give the null pointer exception and also getGender is equal to null means java stream give the null pointer exception. Now My Question is How to Handle this kind of null pointer exception in java

Victor
  • 3,520
  • 3
  • 38
  • 58
  • 1
    Possible duplicate of [What is a NullPointerException, and how do I fix it?](https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – ferpel Feb 11 '19 at 18:35
  • your code won't throw `NullPointerException` even without `Objects.nonNull` filters. Whay do you mean by stream give the null pointer exception ? – Ruslan Feb 11 '19 at 18:38
  • Actually my member model object value is null so If I am accessing member.getGender() means it's give the null pointer exception .. my concern is how to fix this kind of null pointer exception when using stream api –  Feb 11 '19 at 19:20
  • reformat to make easier to read – Victor Feb 11 '19 at 22:03

3 Answers3

0

Your membrelist contains an instance of member which it's null and then you affect this list to your variable list so, then your list contains a number which it's reference to the null pointer sorry for my english i'm beginner

Othmane
  • 21
  • 4
0
Optional.ofNullable(list.getMember())
                .orElseGet(Collections::emptyList)
                .stream()
-1

NullPointerException(s) can be eradicated by, literally, not allowing null values into your objects.

Are you scared list.getMember() might return null?
Take some precautions.

// 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();
}
LppEdd
  • 20,274
  • 11
  • 84
  • 139