Java 7是否支持函数式编程,还是需要使用FunctionalJava或其他库?我认为它已经支持了,但是没有找到太多相关信息。
Java 7是否支持函数式编程,还是需要使用FunctionalJava或其他库?我认为它已经支持了,但是没有找到太多相关信息。
这要取决于你对函数式编程的定义。
无论如何,对于你的问题,答案是不。Lambda表达式曾经在Java7中出现过一次,但它们仅会出现在Java8中。看起来,在Java8中,你可以通过新的lambda符号和常规的JDK8类库(特别是集合)结合使用来完成很多工作,在你需要像FunctionalJava这样的东西之前。但这取决于你想做多少。许多面向对象的人将只使用FP的一种风格-一个常见的例子是具有map
、filter
等功能的集合。这本身无疑会将Java 更接近 FP-并且可能对你来说已经足够了。
if
,try
等需要返回值。其他像Lisp/Scheme或Erlang这样的语言也被认为是函数式的;但在较不严格的意义上;因为它们本来就是动态类型的。
你可以这样说,Javascript与Lisp(不纯的动态函数语言)一样具有函数式编程的特性,因为它一直有lambda和一级函数。但是Java属于静态类型家族,不如Javascript,并且明显比现有的静态类型FP语言差。http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-final.html
http://cr.openjdk.java.net/~briangoetz/lambda/collections-overview.html