我是java的新手,我遇到了返回字节数组的lambda。
@Test
@Parameters
public void shouldThrowsExceptionWhenInvalidInput(Supplier<? extends AlphabeticDatatype> supplier) {
catchException(supplier).get();
assertThat(caughtException())
.isExactlyInstanceOf(IllegalArgumentException.class)
.hasMessageStartingWith("i18n|ex.domain.datatype.alphabetic.length");
}
private Object[] parametersForShouldThrowsExceptionWhenInvalidInput() {
return $(
$((Supplier<AlphabeticDatatype>) () -> new StringDatatype("ASCII", true, 63).toBytes("")),
$((Supplier<AlphabeticDatatype>) () -> new StringDatatype("UTF-8", true, 24))
);
}
我的自定义数据类型编写单元测试。我只需要调用toBytes()来检查异常。 但是这个lambda:
(Supplier<AlphabeticDatatype>) () -> new StringDatatype("ASCII", true, 63).toBytes("")
说&#34; lambda表达式中不兼容的返回类型byte [] &#34;
我做错了什么?
答案 0 :(得分:2)
这只是因为:
() -> new StringDatatype("ASCII", true, 63).toBytes("")
这是Supplier<byte[]>
类型,您将其类型转换为(Supplier<AlphabeticDatatype>)
。
种类错误。如果你这样做,那么你假装的东西。它可能会非常错误。