Lambda在Java中返回字节数组

时间:2014-12-08 06:55:21

标签: java lambda

我是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;

我做错了什么?

1 个答案:

答案 0 :(得分:2)

这只是因为:

() -> new StringDatatype("ASCII", true, 63).toBytes("")

这是Supplier<byte[]>类型,您将其类型转换为(Supplier<AlphabeticDatatype>)

种类错误。如果你这样做,那么你假装的东西。它可能会非常错误。