Java 8中的Lambda表达式

最近Java 8的正式版已经推出,今天闲着没事就下载好了java 8 的jdk和jre来尝尝鲜。

环境安装

首先安装java 8的jdk 和 jre, 下载地址,安装好基础环境后, 可能对于稍微老一点的eclipse会不支持java 8的开发, 此时我们需要对eclipse添加java 8的支持,我们可以通过更新 JDT 来支持 Java 8。

步骤如下:

  1. 菜单:Help > Install New Software...
  2. 输入如下 URL 地址, 
    http://build.eclipse.org/eclipse/builds/4P/siteDir/updates/4.3-P-builds
  3. 按回车键
  4. 选择分类 ‘Eclipse Java 8 Support (BETA)‘
  5. 为了更快速的安装,请不要选择 ‘Contact all updates sites during install to find required software‘
  6. 一路点击next, 然后接受协议,点击finish
  7. 安装完成后重启eclipse即可。

Lambda表达式

在平时的Android开发过程中,对一个View的点击事件做处理的写法一般是如下这样的 : 
Button mJumpButton = (Button) findViewById(R.id.button_jump);
		mJumpButton.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Intent intent = new Intent(MainActivity.this,
						SecondActivity.class);
				startActivity(intent);
			}
		});
在上面的代码中,我们创建了一个onClickLisnter的匿名类,然后覆写了onClick方法,在该方法中对button的点击事件作出处理。可以看出, 整个功能的代码嵌套有点多,不是很简洁。

在java 8中增加了Lambda表达式,使得这个过程变得很简单, 由于Android目前还没有支持java 8 , 因此我们用一个demo来演示Lambda表达式的使用。

1、自定义一个onClickLisnter接口
package com.example.java.lambda;


public interface OnClickListener {
	public void onClick(JView view);
}

2、定义一个JView类简单模拟一个View
package com.example.java.lambda;

public class JView {
	// 点击事件监听器
	private OnClickListener mClickListener = null;

	/**
	 * 
	 * @param position
	 */
	public JView() {
	}

	/**
	 * 
	 * @return
	 */
	public OnClickListener getClickListener() {
		return mClickListener;
	}

	/**
	 * 
	 * @param listener
	 */
	public void setClickListener(OnClickListener listener) {
		this.mClickListener = listener;
	}

	/**
	 * 
	 */
	public void click() {
		if (mClickListener != null) {
			mClickListener.onClick(this);
		}
	}
}

3、Lambda表达式的使用
/**
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		// 创建一个view
		JView view = new JView();
		// 使用匿名内部类的方式, 老式的写法
		view.setClickListener(new OnClickListener() {

			@Override
			public void onClick(JView view) {
				System.out.println("点击事件");
			}
		});
		view.click();

		// 使用lambda表达式的方式, 新的写法
		JView view2 = new JView();
		view2.setClickListener((v) -> System.out.println("点击事件(lambda表达式)."));
		view2.click();
	}

4、输出结果 
Java 8中的Lambda表达式
可以看到使用Lambda表达式非常简洁的完成了任务。

Lambda表达式使用说明

1、一个可以接受Lambda表达式的接口只能有一个方法,否则在编译时将抛出异常。例如在上文中的onClickLisntener中只能有onClick方法, 如果再添加一个方法则会抛出异常;

2、为了显示的说明某接口是可使用lambda表达式, 可以使用@FunctionalInterface注解该接口, 例如
@FunctionalInterface
public interface OnClickListener {
	public void onClick(JView view);
}

3、lambda表达式的参数可以使用如下的格式,例如 
(int a, int b) -> a + b ;
也可以省略掉参数的类型, 简写为  : 
(a, b) -> a + b ;
如果没有参数,则直接写上空括号即可, 例如 :
() -> System.out.println("no params") ;

4、lambda的返回值, 如果函数有返回值,则用户可以显式的将结果返回,例如 : 
(a, b) -> a + b ;

用户也可以不显式的调用return 返回结果,lambda会将最后一句的 a + b 结果返回。例如 : 


(a, b) -> a + b ;

更多内容请参考官方资料


Java 8中的Lambda表达式,布布扣,bubuko.com

Java 8中的Lambda表达式

上一篇:Http协议&Servlet


下一篇:vue.config.js配置代理处理跨域