供应商或非供应商

Supplier or not a supplier

我是 java 8 的新手,我有这个问题

private Supplier<MissingAttribute> getExceptionSupplier(final String message) {
return () -> new MissingAttribute(message);        
    }

我的一个团队成员说接受消息对象使它不再是一个供应商而是一个函数但是另一个团队成员说这还是一个供应商(一个get函数)。函数中的消息是预定义的

我不知道什么是对的。

public class MissingAttribute extends Exception {
public MissingAttribute(String message, Exception cause) {
super(message + " : " + cause.getMessage(), cause);
}
public MissingAttribute(String message) { 
super(message); 
} 
.
.
. 

我在网上查了一下,但我仍然不确定答案。对此有任何见解表示赞赏!!

你的函数 getExceptionSupplier returns 一个以字符串作为参数的供应商。这里的 Supplier 没有将任何对象作为输入。您在这里使用 String 代替函数。您混淆了普通函数和 Function 函数式接口,它将类型 T 作为输入并生成类型 U 作为输出。

你的方法 returns 从技术上讲是一个供应商,即一个不接收任何参数并且 returns 某些东西的对象。

但在想法中,它看起来像一个函数,因为您向该方法提供了一个参数,并且它创建的供应商依赖于该参数。

尽管如此,它仍然是一个供应商,因为一旦它被创建,您将在每次调用时始终具有相同的行为。请注意,供应商考虑外部常量是完全标准的。

总之,在调用代码中使用此供应商后,可以将其重构为函数,或者保留此创建带有参数的供应商的方法是有意义的。