当前位置: 首页 > 面试题库 >

在Functional Java和Guava之间有很好的比较吗?

喻子航
2023-03-14
问题内容

我想在我要教的课程中使用Functional
Java或Guava(或不太可能的Scala)。尽管有许多在JVM上运行的功能语言,但我还是要坚持看起来尽可能像Java的东西,即,与Java
8预期的功能特性在概念和语法上最兼容的东西。

看起来Functional
Java和Guava是最佳人选。在功能,易用性,与纯Java的概念紧密性等方面,我还找不到能与它们进行比较的任何东西。有人知道这些库之间有很好的比较吗?


问题答案:

Guava的目标不是在Java中提供功能惯用语。从功能说明的 Guava Wiki页面上:

过度使用Guava的函数式编程习惯用法会导致冗长,混乱,不可读和低效的代码。这些是迄今为止最容易(也是最常见)的Guava滥用部分,当您费时费力地编写代码以使代码“单一”时,Guava团队就会哭泣。

请确保在使用Guava的功能实用程序时,传统的命令式处理方式不易读。尝试写出来。真的那么糟糕吗?这比您将要尝试的笨拙的功能方法更具可读性吗?

对Java
7的过多依赖过于依赖功能习惯用法,因为开销太高了(请参阅垂直问题)。Java 8将改变这种情况,这将改变Java库和程序在详细级别上的设计方式。在Java 8或更高版本中,不建议使用Java
7或更高版本。

如果您尝试教授函数式编程,那么最好坚持使用(或多或少)纯函数式语言。每种与FP和OOP混杂(或仿真)的语言都会使人分心。



 类似资料:
  • 本文向大家介绍C#和.NET Framework之间的比较,包括了C#和.NET Framework之间的比较的使用技巧和注意事项,需要的朋友参考一下 C#是一种编程语言,.NET框架是由Microsoft开发的软件框架。 .NET具有公共语言运行库(CLR),它是.NET框架的虚拟组件。框架是一大类库。 .NET不仅具有C#,而且还具有C#,您可以使用VB,F#等。为.NET Framework

  • 当有一个已定义的长值时,这种方法可以很好地工作。但是,当为null时,我不会得到结果。似乎运算符不能比较空值。 我尝试在子句中使用,但如果MAX结果为null,并且以下查询同时返回MAX Long值和null值,则只希望实体具有null值: 如何选择具有最大值的实体,或者如果没有设置,则获取为空的实体?

  • 问题内容: 当匿名用户对涉及KeyListeners的我的回答不满意并建议使用Key Bindings时,出现了这个问题。这个匿名用户告诉我KeyListener接口是一个旧的AWT解决方案,不应使用。 但是,我不知道我是否应该完全信任该信息。我已经在包括oracle在内的各种网站上进行了研究,但没有发现关于KeyListeners或Key Bindings的功能。我知道两个人执行相似的任务这一事

  • 问题内容: 对于我正在开发的应用程序,nodejs需要验证PHP创建的哈希,反之亦然。 问题是,在node.js中测试时,PHP中生成的哈希(通过仅使用PHP 函数的Laravel 类)返回false。 以下node.js脚本: 输出:“ PHP失败的nodejs通过”,而以下PHP脚本: 输出“ PHP通过的nodejs通过的”。 我已经在Ubuntu 14.04.1中使用PHP 5.5.18,

  • 问题内容: 我正在研究为项目使用哪种模拟框架,并将其范围缩小到JMockit和Mockito。 我注意到 Mockito 在 Stackoverflow上 被评为“ Java最佳模拟框架 ”。 在比较 JMockit 的“ 模拟工具比较矩阵 ”上的功能时,看来 JMockit 具有多个不同的功能。 是否有人有 Mockito 可以做到的任何特定信息(无意见),而 JMockit 则无法实现,反之亦

  • 问题内容: 我是一名Web开发人员,我想将Web产品移至iPhone。其中一种产品类似于GoogleMaps:在手机屏幕上显示地图,您可以拖动或调整地图大小并查看我们添加到地图中的一些信息。 还有其他类似的产品吗?它们之间有什么区别?我应该选择哪一个? 问题答案: 罗里·布莱斯(Rory Blyth)的答案包含有关两个JavaScript移动框架的一些有效观点。但是,他的要点是不正确的。事实是Ti