如何更好地使用Java 8的Optional
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何更好地使用Java 8的Optional相关的知识,希望对你有一定的参考价值。
参考技术A Java 8Optional包含或包含非空值容器象 Stream API都使用Optionaljava非讨厌点nullpoint碰空指针错抛Exception需要逐行检查哪象空带量必要精力损耗抛NPE错误用户操作错误发员错误应该避免能每加入非空检查阅读性维护性都比较差
面代码手工非空检查:
public void addAddressToCustomer(Customer customer, Address newAddress) if ( customer == null || newAddress == null) return; if ( customer.getAddresses() == null ) customer.setAddresses ( new ArrayList>()); customer.addAddress(newAddress);
另外些发员喜欢通非空检查实现业务逻辑空象应该用决定系统行意外Exceptional值应看错误业务逻辑状态
我返List集合应该总返空ListNull允许调用者能够遍历必检查Null否则抛NPE
我根据标识键ID查询数据库没查需要返空象办建议抛Exception其实符合函数进原则变函数两返返错Exception函数式编程范式告诫我要轻易抛Exception
Java 8Optional发挥作用允许我返空象
Optional isPresent() get() 用检查其包含象否空或返:
Optional someValue = someMethod();
if (someValue.isPresent()) // check
someValue.get().someOtherMethod(); // retrieve and call
种用并能体现Java 8全部处Optional看需要使用某T值间某种间或者协调者Mediator普通象包装器
值返类型T需要使用值让 Optional 处于间确保间交互进行必要工干预
协调者Optional能够照顾T值提供给作输入参数种情况T空确保错T值空让切都运作让Optional执行其作执行段代码块等等实际语言机制补充
面案例涉及Lambda表达式 引用单词流第"L"始单词取作返结Optional
如何使用流构建器和块模式更好地构建社交媒体应用程序
【中文标题】如何使用流构建器和块模式更好地构建社交媒体应用程序【英文标题】:how to architect better for a social media app using stream builder and bloc pattern 【发布时间】:2021-03-22 13:52:30 【问题描述】:目前正在使用直接 API 调用并将数据映射到列表中,并使用回调函数来更改列表属性。 我的 API 模型是
class UserProfileResponse
int status;
String message;
Data data;
class Data
UserDetails userDetails;
List<Post> posts;
String followers;
String following;
class Post
String id;
String userId;
String post;
String imagepath;
String location;
DateTime postDate;
String likes;
String status;
String active;
String inactive;
String createdBy;
String postType;
String userLiked;
String isGroup;
String videoLink;
String comments;
String shares;
String thumbnail;
class UserDetails
String username;
String email;
String id;
String profilePicture;
String bio;
String address;
String mobile;
在需要 API 调用时,如何使用 bloc 模式即时更新 like 和 like ,目前我使用 set state 并更新列表,然后调用 API 请求进行后端更改,回调很麻烦? 是否可以使用 API 响应流构建它并同时列出数据流,例如,与选项不同,这样我就可以在网络中无延迟地更新?
【问题讨论】:
您至少应该自己尝试一下,如果您遇到任何问题,请在 SO 上寻求帮助,请参阅pub.dev/packages/flutter_bloc 【参考方案1】:使用 streamprovider 可能会对您有所帮助,但请确保不要多次调用提供程序,否则您将对 API 进行不必要的调用。
【讨论】:
以上是关于如何更好地使用Java 8的Optional的主要内容,如果未能解决你的问题,请参考以下文章