调整到合适的心态
想要尝试运用最新的特性编写出更加高效和整洁的代码,你必须了解一下几个新的概念--好吧,至少鄙人需要。什么是lambda表达式?
最简单的看待lambda表达式的方式就是,你可以把它看做一个方法:”它提供一系列的正式的参数和一个通过这些参数来表述逻辑的方法体---它可以是一个表达式或者一个代码段。lambda表达式的参数可以是声名的或者引用的,当这些参数是引用类型的时候,那么这些类型就是源于针对lambda表达式的功能性接口。从返回值来看,一个lambda表达式可以是无返回值的--它们不返回任何结果,或者是有返回值的--在表达式里面的某个执行语句返回一个值。
下面是一个lambda表达式的例子:
01 |
(a) ( int a, int b) -> a + b
|
03 |
(b) ( int a, int b) -> {
|
什么是功能性接口呢?一个功能性接口就是一个只含有抽象方法的接口,只是声名了一个函数。在某些场合下,这个唯一的函数可能是一个带有重载因子的的多态函数,这种情况下,所有的函数对外都是一个函数。除了典型的通过新建和初始化一个类来新建一个接口实例,功能性接口实例还可以通过使用一个lambda表达式、方法、或者构造引用来达到新建实例的效果。下面是一个功能性接口的例子:
2 |
public interface FuncInterface {
|
3 |
public void invoke(String s1, String s2);
|
下面是来自java api的功能性接口:
3 |
java.util.concurrent.Callable
|
4 |
java.awt.event.ActionListener
|
接下来让我们来看看一个线程的启动在future中可能会发生怎么的变化:
旧方式:
1 |
new Thread( new Runnable() {
|
4 |
for ( int i= 0 ; i< 9 ; i++) {
|
5 |
System.out.println(String.format( "Message #%d from inside the thread!" , i));
|
新方式:
2 |
for ( int i= 0 ; i< 9 ; i++) {
|
3 |
System.out.println(String.format( "Message #%d from inside the thread!" , i));
|
即使我还没有写过与java swing,AWT相关的功能,但是我还是可以断定:lambdas肯定会给那些Swing开发者带去很多的便利。
动作监听:
01 |
JButton button = new JButton( "Click" );
|
04 |
button.addActionListener( (e) -> { |
05 |
System.out.println( "The button was clicked!" );
|
09 |
button.addActionListener( new ActionListener() {
|
11 |
public void actionPerformed(ActionEvent e) {
|
12 |
System.out.println( "The button was clicked using old fashion code!" );
|
什么是SAM?SAM 是单个抽象方法的替代,因此,直接一点,我们可以说SAM==功能性接口。即使在最初的规范里面,只有一个抽象方法的抽象类被认为是SAM类型的,很多人还是发现/猜出了这样定义的原因。
方法/构造方法 引用
相关推荐
下载JDK-8u321-macosx-x64.dmg文件后,我们可以按照以下步骤进行安装: 1. **打开DMG文件**:双击下载的jdk-8u321-macosx-x64.dmg文件,这将打开一个新的磁盘映像窗口。 2. **安装JDK**:在磁盘映像窗口中,您会...
在这个“jdk8资源包(含安装说明)”中,我们可以找到JDK8的安装程序以及可能的使用指南,帮助用户轻松地在自己的系统上安装和配置Java环境。 首先,JDK8的显著特性之一是Lambda表达式。Lambda表达式简化了函数式...
这种方法区的调整是由于永久代存在的一些问题,比如大小设定困难,容易引发溢出,以及给垃圾收集器(GC)带来额外的复杂性,导致较低的回收效率。元空间位于直接内存(Direct Memory),这使得内存分配更加灵活,...
首先,让我们来看看Java 8中的一些核心特性: 1. **lambda表达式**:这是Java 8最大的亮点之一。Lambda表达式使得函数式编程在Java中变得更加便捷,它允许开发者将功能作为方法参数,或者把代码看作数据。这种简洁...
JDK 1.8,又称为Java SE 8,于2014年发布,带来了重大的语言和API改进,其中包括: 1. **Lambda表达式**:这是Java 8最具标志性的特性,它引入了一种简洁的语法来表示匿名函数,大大简化了多路分支和并行编程。 2....
在"jdk-8u66-linux-x64"这个压缩包中,我们主要关注的是JDK 8的第66次更新,这是一个针对64位Linux操作系统的版本。64位系统能够处理更大的内存和更多的计算任务,因此对于大型应用或服务器环境是理想的选择。 1. *...
《深入解析JDK8源码:探索lang、io、nio、util包的奥秘》 在Java编程领域,深入理解JDK源码是提升技术能力的重要途径。JDK8是Java发展过程中的一个重要里程碑,引入了许多创新特性,如Lambda表达式、Stream API以及...
首先,我们来看“jdk-8u202-windows-x64.exe”这个文件,它是JDK 8u202的安装程序。在Windows操作系统上,.exe文件通常表示可执行程序。在这个特定的版本中,“x64”表示该JDK是为64位系统设计的,这意味着它可以...
首先,我们来看看JDK 17提供的主要组成部分: 1. **Java编译器(javac)**:这是将Java源代码转换为字节码的工具,字节码可以在任何支持Java的平台上运行。 2. **Java虚拟机(JVM)**:JVM是Java程序的执行环境,它...
该视频详细讲述了JDK的安装过程!看这个视频需要下载atrecply.msl这个安装视频
JDK 1.8,也被称为Java 8,是Oracle公司于2014年3月发布的里程碑式版本。此版本引入了诸多新特性,如Lambda表达式,这使得函数式编程在Java中成为可能。此外,还增加了方法引用和新的日期/时间API,改进了Stream API...
首先,我们来看JDK 8。这个版本是Java的一个长期支持(LTS)版本,意味着它将得到更长时间的安全更新和技术支持。JDK 8引入了Lambda表达式、Stream API、新的日期和时间API等重大改进,极大地提高了代码的可读性和...
首先,让我们来看看JDK 1.8中的关键特性: 1. **Lambda表达式**:这是JDK 1.8最重要的新特性之一,它引入了函数式编程的概念。Lambda表达式允许将匿名函数作为方法参数传递,使得代码更加简洁、可读性更强,尤其在...
首先,我们来看"jdk-8u202-linux-x64.tar.gz"。这是JDK 8更新202的64位版本,专为Linux操作系统设计。JDK 8是Java历史上的一个关键版本,引入了许多重要的特性,如Lambda表达式、Stream API、默认方法(在接口中)...
首先,我们来看Windows平台的安装。`jdk-11.0.10_windows-x64_bin.exe`是专为Windows 64位系统设计的安装程序。运行此可执行文件,用户将被引导完成安装过程,包括选择安装路径、设置环境变量(如JAVA_HOME、PATH)...
在探讨“JDK11 for Mac”这一主题时,我们主要关注的是Java开发工具包(JDK)的第11个版本如何适用于Mac操作系统。Java作为一种广泛使用的编程语言,在软件开发领域占据着重要地位,而JDK则是Java开发的基础工具集,...
首先,让我们来看看`sunw`目录。`sunw`是Sun Microsystems(Java的创建者)特定的包,包含了与Sun操作系统相关的类和接口。尽管这部分源代码可能不适用于所有平台,但它揭示了Java如何与操作系统进行低级别的交互,...
首先,让我们来看看JDK17中的主要新特性: 1. **Sealed Classes**:这是一个重要的新特性,它允许程序员限制哪些类可以扩展或实现特定的类或接口。这增加了代码的封装性,提高了安全性,并有助于防止意外的继承行为...
首先,我们来看看`jdk-11_windows-x64_bin.exe`这个文件。这代表了适用于Windows 64位操作系统的JDK 11安装程序。在安装过程中,它会包含Java运行时环境(JRE)以及用于开发和调试Java应用程序的工具。安装JDK后,...
jdk1.8.0_77是Sun公司针对Java开发员的...所以JDK是一个开发环境,用于构建应用程序,applet程序,和使用java编程语言的组成部分,需要的小伙伴快来下载体验吧,小编给大家带来了完整的教程,跟着小编一起来看看吧。