我有一个记录器API,该记录器接受IStatus是蚀IStatus对象的供应商。
IStatus status = new Status(Status.ERROR,"plugin","Message",e);
例:-
接口:
void log(Supplier<IStatus> statusSupplier);
实现方式:
public void log(Supplier<IStatus> statusSupplier) {
if(statusSupplier.get() == null) {
return;
}
handle(statusSupplier.get());
}
如何使用客户端代码调用此API。请提出如何为上述方法创建lambda表达式。
还是此方法对于Java 8 lambdas.please是正确的,请提出一些想法?
最佳答案
Supplier是Java 8的功能接口之一。它具有一个没有参数的方法(get()
),并返回通用参数的实例。
因此,在您的情况下,Supplier<IStatus>
应该返回一个IStatus
实例。您可以使用以下代码实现此目的:
log(() -> new Status(Status.ERROR, "plugin", "Message", e));
说明:此lambda表达式将是
get
接口的Supplier
方法的实现。 ()
表示该方法不接受任何参数。当您的代码仅包含一行代码时,您不需要return
语句,因为默认情况下会返回此行的结果。供应商的日志记录实现将通过在真正需要之前不执行代码来帮助您。例如,当您调用
log
方法执行一些复杂的功能时。