问题标签 [supplier]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - (Java 8) java.util.function.Supplier
在下面的代码中,我尝试调用获取供应商的 info 方法。(info 方法被重载:一个是 String,另一个是 Supplier。)编译器抱怨“方法 info(String) 不适用于参数Supplier<Double>
”。我的期望是通过发送 Supplier 对象来调用获取 Supplier 的 info 方法。我可以得到一些帮助来理解这个错误吗?
java - 这些 lambda 供应商之间有什么区别?
我只是想知道这两个供应商声明之间是否有任何区别:
提前致谢 :)。
java - Java:获取通用供应商返回对象的类类型
假设给出了以下定义:
有没有办法在MyClass.class
不实际调用.get()
供应商的情况下获得?
为什么?我必须知道指定的类才能做出一些合乎逻辑的决定。基于此,我可能需要找到另一个MyClass
具有参数的构造函数,并且我对目标类的唯一了解是这种类型的提供者。当然,我可以调用.get()
并从那里开始,如下所示:
但是在执行我的中间步骤之前使用它可能会导致不必要的对象创建
java - Unsing Java 的供应商接口以促进单元测试的模拟行为
我最近不得不重构一个类 [X] 并改进它的单元测试,并在这样做时发现为了从测试中全面覆盖该类,我需要模拟该类的 3 个不同组件的行为. 为了论证,类 [A]、[B] 和 [C]。因为 [A]、[B] 和 [C] 都在 [X] 中构建,我决定为它们中的每一个传递一个供应商,从而允许单元测试模拟供应商并实现类的完整测试覆盖。
然而,我的一位同事建议我可以为 [A]、[B] 和 [C] 中的每一个添加包可见的 getter 方法来处理对象构造,然后在创建 [ 的实例时从单元测试中覆盖这些方法X] 进行测试。
我可以看到这消除了添加 Supplier 实现的额外复杂性,但我觉得这不必要地暴露了 [X] 的实现。这些方法中的一种是否被认为比另一种更好?我正在从事的项目使用我不太熟悉的 Spring,但我想知道是否有更好的解决方案。
有没有人对此有一些可靠的建议?
java - 为什么 Optional 的 or 和 flatMap 方法的供应商类型参数是通配符?
该Optional.or
方法是在 Java 9 中添加的。这是方法签名
既然是final类,为什么是Supplier
take的类型参数? extends Optional
而不是just ?Optional
Optional
该Optional.flatMap
方法也是如此。这是对 Java 8 的更改。
在 Java 8 中,它在 Java 9 中Function<? super T, Optional<U>> mapper
被更改为Function<? super T,? extends Optional<? extends U>>
。
java - 使用 Callable 而不是供应商,反之亦然
我遇到了使用Callable
而不是Supplier
. 我没有看到任何线程产生使用Callable
。但是可以使用Callable
代替Supplier
吗?
与我一起工作的一位开发人员说它做同样的工作。通过文档,它不会但想在这里了解专家的意见。
处理响应的方法
lambda - 使用 Lambda 函数来使用供应商提供的所有对象
寻找如何使用 Java lambda 函数,以便消费者可以处理供应商提供的所有对象,并摆脱显式while
循环和null
检查。
我有一个数据库的字符串键供应商,我想使用消费者来处理这些键中的每一个。
我想consumer
处理由提供的每个密钥keyGen
并尝试以下操作。它可以工作,但我确信必须有一种更简洁的方式来使用 lambda 函数来简化它。
SimpleKeySupplier 有效,简化版本如下:
此示例中的消费者已大大简化,可用于在 StackOverflow 上发布。
java - java.lang.Long 不是函数式接口
我创建了这个 GenericBuilder 类(几乎没有受到如何在 Java 8 中实现构建器模式的启发?)
但是第二个 with() 方法抛出
不兼容的类型:无法推断类型变量 U(参数不匹配;java.lang.Long 不是函数式接口)
当我执行以下操作时:
请注意,实体是实体类的一个实例。
junit - 在 JUnit 5 中将 `Supplier` 作为消息提供者的选项的实际用途
JUnit 5 中的Assertions
类允许传递Supplier<String>
as amessageSupplier
对象,该对象提供测试失败时报告的消息文本。
例如assertEquals
:
我想知道这样一个供应商的实际用途可能是什么,特别是在单元测试的背景下。
我可以想象也许本地化字符串,虽然当观众是开发项目的成员时本地化似乎有点奇怪。
➥ 除了硬编码消息字符串之外,传递这样的消息提供者还有其他实际用途吗?