带有空指针异常的Java Stream

我在 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;

    }

    }

模型列表类:


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 意味着流给出空指针异常,getGender 等于 null 意味着 java 流给出空指针异常。现在我的问题是如何在java中处理这种空指针异常


交互式爱情
浏览 292回答 3
3回答

HUH函数

Optional.ofNullable(list.getMember()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.orElseGet(Collections::emptyList) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.stream()

呼如林

您的成员列表包含一个成员实例,它为空,然后您将此列表影响到您的变量列表,因此,您的列表包含一个数字,它引用空指针对不起我的英语我是初学者

一只名叫tom的猫

NullPointerException(s) 可以通过从字面上说不允许null值进入您的对象来根除。你害怕list.getMember()可能会回来null吗?采取一些预防措施。// Use annotations to mark that this method doesn't accept null// Check for a possible null value@NotNullpublic List<Member> getMember() {&nbsp; &nbsp; return Collections.unmodifiableList(member);}public void setMember(@NotNull final List<Member> member) {&nbsp; &nbsp; this.member = member != null&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;? new ArrayList(member)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;: Collections.emptyList();}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java