对于以下声明
public static <E extends SomeInterface> E methodName(
@NonNull Supplier<@NonNull E> supplier,
Consumer<@NonNull E> consumer)
Lombok 是否会自动对
supplier
的结果进行空检查?
和/或确保传入的 E 进行空检查(例如,通过生成空包装器)对 consumer
有意义吗?
正如推荐,这可以很容易地检查:Lombok 不这样做。测试代码示例:
static class NullWrapperTest
{
public static void check(@NonNull Supplier<@NonNull Object> supplier,
Consumer<@NonNull Object> consumer)
{
consumer.accept(supplier.get());
}
}
@Test()
void testNullity()
{
assertThatThrownBy(() -> NullWrapperTest.check(() -> null, (param) -> System.out.println(param)));
}
测试失败,没有抛出异常。如果您知道这是否有计划,请添加另一个答案。