标签:转换 静态 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)默认方法
/** * 用户身份认证(函数化接口) */ @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")); } }
(3)静态方法
/** * 消息传输格式转化接口 */ @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"); } } }
(4)来自object继承来的方法
@FunctionalInterface(函数式接口)允许重写object内的方法
5.lambda和函数式接口
(1)函数式接口只能操作一个方法
(2)lambda表达式,只能操作一个方法,
(3)java中的lambda表达式,核心就是一个函数式接口的实现
6.同样可以使用匿名内部类实现函数式接口
//匿名内部类实现接口的方法 IUserCredential iUserCredential = new IUserCredential() { @Override public String vertify(String username) { return "admin".equals(username) ? "管理员" : "会员"; } }; System.out.println(iUserCredential.vertify("admin"));
但是有很多冗余代码
7.使用lambda表达式优化
//使用lambda表达式优化代码 IUserCredential credential = (String username) -> { return "admin".equals(username) ? "lambda 管理员" : "lambda 会员"; }; System.out.println(credential.vertify("admin"));
标签:转换 静态 manage 函数式 use false 静态方法 model 数据
原文地址:https://www.cnblogs.com/freeht/p/12988694.html