【发布时间】:2018-07-01 02:45:28
【问题描述】:
据我所知,函数式编程意味着提供不同的行为实现接口。这会比我必须创建一个新类并在其中实现该接口更好吗? 这个我不是很清楚
interface worldGreeting {
String processName(String str);
}
public class ReadJson {
public static void main(String[] argv) throws Exception {
worldGreeting morningGreeting = (str) -> "Good Morning " + str + "!";
worldGreeting eveningGreeting = (str) -> "Good Evening " + str + "!";
System.out.println(morningGreeting.processName("Waseem"));
System.out.println(eveningGreeting.processName("Saeed"));
}
}
第二种方法是这样的
class Moring implements worldGreeting{
@Override
public String processName(String str) {
return "Good Morning " + str + "!";
}
}
class Evening implements worldGreeting{
@Override
public String processName(String str) {
return "Good Evening " + str + "!";
}
}
【问题讨论】:
-
SAM 类型是一个丑陋的黑客。
-
你应该重新考虑你的命名。约定是让类型(包括接口)以大写字母开头。此外,当与读取 Json 没有任何关系时,不要调用
ReadJson类。除此之外,函数式编程与如何实现接口无关。但是您应该能够在示例中看到使用 lambda 表达式的明显优势…… -
在您的情况下,唯一的优势是使用 lambda,您不必创建显式类或匿名类来实现接口。
-
@Jean-BaptisteYunès 这只是 POC 类。
标签: interface java-8 functional-programming