当前位置: 移动技术网 > IT编程>软件设计>设计模式 > JDK8新特性之Lambda表达式代码实例

JDK8新特性之Lambda表达式代码实例

2020年08月01日  | 移动技术网IT编程  | 我要评论
简介1、JDK8的新特性;2、简化对接口的实现,方便用接口类型接收对应返回值的方法或对象。使用规则1、接口必须是函数式接口,即接口有且只能有一个非default修饰的方法(JDK8允许接口中的方法访问修饰符default类型。);2、习惯用@FunctionalInterface标记接口为函数式接口,也可以不标记;3、->(读作goes to)右边要和接口中方法的返回值一致,void不能返回值;4、->左边括号写参数列表,参数列表要么都不写类型,要么都写上类型;5、-&

简介

1、JDK8的新特性;
2、简化对接口的实现,方便用接口类型接收对应返回值的方法或对象。

使用规则

1、接口必须是函数式接口,即接口有且只能有一个非default修饰的方法(JDK8允许接口中的方法访问修饰符default类型。);
2、习惯用@FunctionalInterface标记接口为函数式接口,也可以不标记;
3、右边要和接口中方法的返回值一致,void不能返回值;
4、->(读作goes to)左边括号写参数列表,参数列表要么都不写类型,要么都写上类型;
5、->参数只有一个时可以省略括号;
6、->没有大括号,则表示->之后的方法体只有一行,推荐写大括号;
7、->没有大括号且只有一个返回值,则必须省略return;
8、::表示引用方法
9、::要求被引用的方法和接口中的参数一一对应;
10、::构造方法的引用也要和接口的参数一一对应。只用new就可以。 

案例

package com.ctx.bean;
public class User {
	private Long id;
	private String name;
	private int age;
	
	public User(Long id) {
		this.id = id;
	}
	public User() {
	}
	public User(Long id, String name, int age) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
	}
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
} 
package com.ctx.impl;

import com.ctx.bean.User;
import com.ctx.inter.UserInter;

//引用方法
public class QuoteMethod {
	int a=1;
	//这里只能引用第三个方法
	UserInter userInter = QuoteMethod::selectUser3;
	//和上面的意思一样,不过这种样式可以引用下面的三种方法。
	UserInter userInter2 = ( id)->selectUser3(1L);
	//引用构造方法。
	UserInter userInter3 =User::new;
	
	public User selectUser(Long id) {
		return new User(1L, "zhangsan", 1);
	}
	
	public static User selectUser2() {
		return new User(1L, "zhangsan", 1);
	}
	public static User selectUser3(Long id) {
		return new User(1L, "zhangsan", 1);
	}
} 
package com.ctx.impl;

import java.util.List;

import com.ctx.bean.User;
import com.ctx.inter.NoArgs;
import com.ctx.inter.UserInter;


//
public class UserTest {
	public static void main(String[] args) {
		   
		// 有参数有返回值
		UserInter userInter = (id) -> new User(1L, "zhangsan", 1);
		User user = userInter.findUserById(1L);

		UserInter userInter2 = (Long id) -> {
			// 这里可以写业务
			return new User(2L, "lisi", 2);
		};
		User user2 = userInter2.findUserById(2L);

		// 无参数无返回值模式
		NoArgs noArgs = () -> {
			System.out.println("无参数无返回值模式");
		};
		noArgs.fun();
		
	}


} 
package com.ctx.impl;

public interface VarFinal {
	public void fun(int id);
} 
package com.ctx.inter;

public interface NoArgs {
	public void fun();
} 
package com.ctx.inter;

import java.util.List;

import com.ctx.bean.User;
@FunctionalInterface
public interface UserInter {
	public User findUserById(Long id);
	default List<User> findUserByName(String name) {
		return null;
	}
	default List<User> findUserByAge(int age) {
		return null;
	}
} 

本文地址:https://blog.csdn.net/qq_39706570/article/details/108269709

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网