Java7中的函数式编程
Java 7是否支持函数式编程,或者我仍然需要使用FunctionalJava或其他库?我认为is对此有支持,但没有找到太多相关信息。这取决于您对函数式编程的定义 在任何情况下,您的问题的答案都是否定的。Lambdas将在某一时刻出现在Java7中,但它们将只出现在Java8中。在使用Java8时,您可以在需要FunctionalJava之类的东西之前(尤其是集合),但这取决于您想做多少。很多OO爱好者都会对FP的味道感到非常高兴-一个常见的例子是带有Java7中的函数式编程,java,functional-programming,Java,Functional Programming,Java 7是否支持函数式编程,或者我仍然需要使用FunctionalJava或其他库?我认为is对此有支持,但没有找到太多相关信息。这取决于您对函数式编程的定义 在任何情况下,您的问题的答案都是否定的。Lambdas将在某一时刻出现在Java7中,但它们将只出现在Java8中。在使用Java8时,您可以在需要FunctionalJava之类的东西之前(尤其是集合),但这取决于您想做多少。很多OO爱好者都会对FP的味道感到非常高兴-一个常见的例子是带有map、filter等的集合。这本身无疑会让
map
、filter
等的集合。这本身无疑会让Java更接近FP-并且可能对您来说已经足够FP了
问题是,即使如此,这是否允许Java中的函数编程是真的(即使是“不纯的”)?是的,也不是。是的,因为任何带有词汇闭包和lambda符号的语言在理论上都足够了。不,因为由语言Haskell
、F#
、OCAML
和Scala
支持的FP仍然是不切实际的
一些例子:
如果
,尝试
,等等需要返回一个值您可以在OpenJDK上了解当前的状态。即使Java添加了Lambdas,我仍然认为它并不适合。尽管您可能会尝试,Java的命令性本质将不断地干扰。不过,您仍然可以从尝试中获得好处。就像更好的状态管理一样,但是JVM中还有其他语言工作得更好。希望不是。不要把oo和func混为一谈。@AlexWien为什么不?Scala和F#成功地做到了这一点。更不用说,C#的lambda非常非常好。java提供了一种类型推断形式:good point。但与局部类型推理(Scala)或成熟的Hindley-Milner类型推理(Haskell,ML)相比,在冗长性方面的节省仍然非常小。虽然Java的类型推理在处理泛型方法和泛型类的实例化时很有帮助,但FP样式的类型推理允许您使用无显式声明的局部变量,并且静态检查它们。我想说,差异是巨大的,因为它显著地促进了简洁。事实上,差异是非常大的!我只是想指出,Java也有某种类型的推理,尽管它不能与“适当的”函数式语言相比