转载:http://geek.csdn.net/news/detail/94219

在Java 9发布之前,我们来分享一些Java 8开发技巧,本文翻译自JetBrains高级开发主管Trisha Geed的Java 8 Top Tips。

【以下为译文】

在使用JAVA 8进行开发多年后,结合个人使用IntelliJ IDEA的心得,我总结了以下几个JAVA8技巧供大家参考。

Optional

Optional 是一个被高度低估的特性,假若能把它运用恰当,其实它是能帮助减少大量的NullPointerExceptions(无效指针)错误的。以下是有关Optional使用的两个要点:

  • Optional应只用于返回类型而不是参数或域

如果你尝试这样处理,IntelliJ IDEA将会作出如下提示:

  • 避免使用调用的get()

Optional的强项是表达空值并让你对此做出处理。所以在进行下一步前进行值检查是很重要的。幸好IntelliJ IDEA也会对出做出提示:

取而代之,可以尝试使用orElse或orElseGet。

Lambda表达式的使用

Lambda是Java 8的又一个亮点,以下是有关Lambda的使用技巧:

  • 尽量简单

化繁为简是正确使用lambda表达式的关键。你可以把它们简化为单独一行,也可以在方法中重构更复杂的表达式。

  • 清晰明了

由于lambda表达式欠缺类型信息,所以有时会把类型信息放入参数中:

这未免过于冗长了,怎么办?我更倾向于为参数起个有意义的名字。例如:

Lambda表达式的设计

虽然我们较少会以lambda为参数来创建一个方法,但是如果有这样的需求,该如何处理呢?

  • IntelliJ IDEA能帮助实现函数型参数

  • 为你的函数性接口添加@FunctionalInterface

如果你需要自定义函数性接口,那么IntelliJ IDEA将会成为很好的监督者: 
覆盖提示:

重复声明:

为类而不是接口进行定义:

Streams(流)

Stream API是Java8新引入的,使用它有哪些地方注意的呢?

  • 有序排列

  • 使用方法引用

  • 进行集合递归时,尽量使用Streams API

请对比下列两段代码:

在数组循环中使用for循环

在元数据类型数组中使用for循环,将会得到最好的性能表现:

小结

我每天都在寻找新方法,尝试新思路,希望能不断完善个人编程的最佳实践。

Java 8的五大开发技巧的更多相关文章

  1. !! 浅谈Java学习方法和后期面试技巧

    浅谈Java学习方法和后期面试技巧 昨天查看3303回复33 部落用户大酋长 下面简单列举一下大家学习java的一个系统知识点的一些介绍 一.java基础部分:java基础的时候,有些知识点是非常重要 ...

  2. 最受Web前端开发者欢迎的五大开发工具

    工其事,必利于器.好的开发工具毋容置疑会帮助Web前端开发者事半功倍,51CTO在上期主办的技术沙龙<大型网站PHP开发之道> 对现场的百余位Web开发者做了问卷调查,后经51CTO调研小 ...

  3. WebApp开发技巧大全 看了就明白了

    [转载]阅读原文 自Iphone和Android这两个牛逼的手机操作系统发布以来,在互联网界从此就多了一个新的名词-WebApp(意为基于WEB形式的应用程 序,运行在高端的移动终端设备).开发者们都 ...

  4. Android开发技巧——大图裁剪

    本篇内容是接上篇<Android开发技巧--定制仿微信图片裁剪控件> 的,先简单介绍对上篇所封装的裁剪控件的使用,再详细说明如何使用它进行大图裁剪,包括对旋转图片的裁剪. 裁剪控件的简单使 ...

  5. Android开发技巧——使用PopupWindow实现弹出菜单

    在本文当中,我将会与大家分享一个封装了PopupWindow实现弹出菜单的类,并说明它的实现与使用. 因对界面的需求,android原生的弹出菜单已不能满足我们的需求,自定义菜单成了我们的唯一选择,在 ...

  6. Android开发技巧——实现可复用的ActionSheet菜单

    在上一篇<Android开发技巧--使用Dialog实现仿QQ的ActionSheet菜单>中,讲了这种菜单的实现过程,接下来将把它改成一个可复用的控件库. 本文原创,转载请注明出处: h ...

  7. Android开发技巧——自定义控件之使用style

    Android开发技巧--自定义控件之使用style 回顾 在上一篇<Android开发技巧--自定义控件之自定义属性>中,我讲到了如何定义属性以及在自定义控件中获取这些属性的值,也提到了 ...

  8. Android开发技巧——自定义控件之自定义属性

    Android开发技巧--自定义控件之自定义属性 掌握自定义控件是很重要的,因为通过自定义控件,能够:解决UI问题,优化布局性能,简化布局代码. 上一篇讲了如何通过xml把几个控件组织起来,并继承某个 ...

  9. Android开发技巧——自定义控件之组合控件

    Android开发技巧--自定义控件之组合控件 我准备在接下来一段时间,写一系列有关Android自定义控件的博客,包括如何进行各种自定义,并分享一下我所知道的其中的技巧,注意点等. 还是那句老话,尽 ...

随机推荐

  1. STORM_0002_在做好的zookeeper集群上搭建storm的开发环境

    参考文献http://www.cnblogs.com/panfeng412/archive/2012/11/30/how-to-install-and-deploy-storm-cluster.htm ...

  2. C# 线程(二):关于线程的相关概念

    From : http://kb.cnblogs.com/page/42528/ 什么是进程? 当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源. 而一个进程又 ...

  3. 移动应用调试之 Inspect

    移动端开发时,我们常使用chrome自带的模拟器,模拟各种手机设备. 但模拟毕竟是模拟,当开发完毕,使用真机访问页面出现问题时如何调试呢? 下面介绍2种针对android机的调试方法 一.直接使用Ch ...

  4. Html、Css-----当有文字和图片的时候,需要文字和图片居中,怎么实现?不想文字换行怎么设置

    1 当有文字和图片的时候,需要文字和图片居中,怎么实现? <a href=#" target="aa" style="white-space:nowrap ...

  5. ie8不支持transform: translateY,ie9支持不友好

    transform: translateY(0);  ie8 不支持这个属性  但是我觉得用css实现的效果特好 特自然 也许是我的脚本写的不够完善 呵呵    现在我希望其他 主流的浏览器应用CSS ...

  6. iOS - UIImageView

    前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIImageView : UIView @available(iOS 2.0, *) public class U ...

  7. [转载] 高效 MacBook 工作环境配置

    原文: http://mp.weixin.qq.com/s?__biz=MjM5NzMyMjAwMA==&mid=208231200&idx=1&sn=8a76ddc56c1f ...

  8. 初学CDQ分治-NEU1702

    关于CDQ分治,首先需要明白分治的复杂度. T(n) = 2T(n/2)+O(kn), T(n) = O(knlogn) T(n) = 2T(n/2)+O(knlogn), T(n) = O(knlo ...

  9. (八)C语言结构体和指针

    指针也可以指向一个结构体变量.定义的一般形式为: struct 结构体名 *变量名; 前面已经定义了一个结构体 stu: struct stu { char *name; int num; char ...

  10. 转:桥接模式(Bridge)

    转自:http://www.cnblogs.com/rush/archive/2011/06/29/2093743.html  分析十分透彻明了  可以再结合另外一篇文章中的示例理解(http://b ...