更改编码习惯以实现流友好

由于最近的旅行限制,我最近发现自己编写了比平常更多的代码。 复习完之后,我发现我对此不太满意。 我相信这是因为Java是一种“古老”的语言,但是它已经发展了很多,尤其是在其最新版本中。 在长时间使用一种语言时,一定会养成习惯,无论好坏。 语言改变时,需要有意识地努力改变这些习惯。 但是,这是必需的,因为一种语言的良好实践可能会变成另一种语言的不良实践。

我开始使用1.3版-与旧版相比,我感觉像个新手。 但是,这并没有改变我关于实践的观点。 在这篇简短的文章中,我想首先展示一下我编写的原始代码以及如何重新编写它。 一切都始于流。

persons.stream()
  .filter(person->personinstanceofCustomer)
  .map(person->(Customer)person)
  .map(Customer::getSalesRep);

虽然此代码有效-并且易于阅读,但对我来说却是错误的。 一部分是功能性的,另一部分使用传统的运算符。 使用后者和前者感觉很奇怪。

实际上,以上使用的所有运算符都有一个等效的API。 因此,以上代码可以很容易地重写为:

persons.stream()
  .filter(Customer.class::isInstance)
  .map(Customer.class::cast)
  .map(Customer::getSalesRep);

请注意,这些不是新方法! 从1.1版开始, Class.isInstance()可用。 自2004年发布1.5版以来, Class.cast()就可用了!

您可能会将上述代码视为函数式编程... 尽管如此,Java通过提供允许开发人员专注于“内容”而不是让他们处理“方式”的API朝着更多的功能代码取得了进步。 如果您开始使用流,则应该接受该流并开始使用现代API。 在所有情况下,了解后者都是值得的。

翻译自: https://blog.frankel.ch/changing-coding-habits-stream-friendly/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值