为了账号安全,请及时绑定邮箱和手机立即绑定

带有空指针异常的Java Stream

带有空指针异常的Java Stream

交互式爱情 2022-06-15 09:43:57
我在 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.javaimport 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中处理这种空指针异常
查看完整描述

3 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

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


查看完整回答
反对 回复 2022-06-15
?
呼如林

TA贡献1798条经验 获得超3个赞

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



查看完整回答
反对 回复 2022-06-15
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

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

}


查看完整回答
反对 回复 2022-06-15
  • 3 回答
  • 0 关注
  • 291 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号