java8新特性-lambda(1)
2020-12-28 16:29
标签:转换 静态 manage 函数式 use false 静态方法 model 数据 1.什么是lambda表达式 (1)lambda表达式也被称为箭头函数,匿名函数,闭包。 (2)lambda表达式体现的是轻量级函数式编程思想。 (3)->符号式lambda表达式核心操作符号,符号左侧是操作函数,右侧是操作表达式。 (4)jdk1.8新特性 2.Model Code As Date (1)Model Code As Date,编码及数据,尽可能轻量级将代码封装成数据 (2)解决方案:接口&实现类(匿名内部类) (3)存在问题:语法冗余,this关键字,变量捕获,数据控制 3.为什么要使用lambda表达式 (1)不是解决未知问题的新技术 (2)对现有解决方案的语义的优化 (3)需要根据实际需求考虑性能问题 4.函数式接口(function interface) (1)介绍 函数式接口就是java类型系统中的接口 函数式接口是只包含一个接口方法的特殊接口 语义化检测注解:@FunctionalInterface (2)默认方法 (3)静态方法 (4)来自object继承来的方法 @FunctionalInterface(函数式接口)允许重写object内的方法 5.lambda和函数式接口 (1)函数式接口只能操作一个方法 (2)lambda表达式,只能操作一个方法, (3)java中的lambda表达式,核心就是一个函数式接口的实现 6.同样可以使用匿名内部类实现函数式接口 但是有很多冗余代码 7.使用lambda表达式优化 java8新特性-lambda(1) 标签:转换 静态 manage 函数式 use false 静态方法 model 数据 原文地址:https://www.cnblogs.com/freeht/p/12988694.html/**
* 用户身份认证(函数化接口)
*/
@FunctionalInterface
public interface IUserCredential {
/**
* 通过用户账号,验证用户身份信息的接口
* @param username 要验证的用户账号
* @return 返回用户信息
*/
String vertify(String username);
default String getCredential(String username) {
//模拟方法
if ("admin".equals(username)) {
return "admin + 系统管理员";
} else if ("manager".equals(username)) {
return "manager + 用户管理员";
} else {
return "commons + 普通用户";
}
}
}
import com.freeht.chatpar1.IUserCredential;
public class UserCredentialImpl implements IUserCredential {
@Override
public String vertify(String username) {
if ("admin".equals(username)) {
return "系统管理员";
} else if ("manager".equals(username)) {
return "用户管理员";
} else {
return "普通用户";
}
}
}
import com.freeht.chatpar1.impl.MessageFormatImpl;
import com.freeht.chatpar1.impl.UserCredentialImpl;
public class App {
public static void main(String[] args) {
IUserCredential userCredential = new UserCredentialImpl();
System.out.println(userCredential.vertify("admin"));
System.out.println(userCredential.getCredential("admin"));
}
}
/**
* 消息传输格式转化接口
*/
@FunctionalInterface
public interface IMessageFormat {
/**
* 消息转换方法
* @param message 要转化的消息
* @param format 转化的格式
* @return 返回转化后的数据
*/
String format(String message, String format);
/**
* 通过静态方法实现(消息合法性验证)
* @param msg
* @return
*/
static boolean vertifyMessage(String msg) {
if (msg != null) {
return true;
} else {
return false;
}
}
}
import com.freeht.chatpar1.IMessageFormat;
public class MessageFormatImpl implements IMessageFormat {
@Override
public String format(String message, String format) {
System.out.println("消息转换。。。。");
return message;
}
}
import com.freeht.chatpar1.impl.MessageFormatImpl;
import com.freeht.chatpar1.impl.UserCredentialImpl;
public class App {
public static void main(String[] args) {
String message = "hello world";
if (IMessageFormat.vertifyMessage(message)){
IMessageFormat messageFormat = new MessageFormatImpl();
messageFormat.format("hello", "json");
}
}
}
//匿名内部类实现接口的方法
IUserCredential iUserCredential = new IUserCredential() {
@Override
public String vertify(String username) {
return "admin".equals(username) ? "管理员" : "会员";
}
};
System.out.println(iUserCredential.vertify("admin"));
//使用lambda表达式优化代码
IUserCredential credential = (String username) -> {
return "admin".equals(username) ? "lambda 管理员" : "lambda 会员";
};
System.out.println(credential.vertify("admin"));
上一篇:python 第22课 列表 内存分析 列表常用操作
下一篇:js 的几种引入方式
文章标题:java8新特性-lambda(1)
文章链接:http://soscw.com/index.php/essay/38870.html