无法将void转换为java.lang.Void

板栗

我正在尝试执行以下操作

interface Updater {
    void update(String value);
}

void update(Collection<String> values, Updater updater) {
    update(values, updater::update, 0);
}

void update(Collection<String> values, Function<String, Void> fn, int ignored) {
    // some code
}

但我收到此编译器错误:

"Cannot convert void to java.lang.Void"

这意味着updater::update不能用作Function<String, Void>

当然我不会写Function <String, void>,也不想将返回类型更改update()Void

我该如何解决这个问题?

霍尔格

Function即使返回声明为类型的值,A也会返回一个值Void(您必须先返回null。相反,一个void方法实际上什么也不会返回,甚至不会返回null。因此,您必须插入以下return语句:

void update(Collection<String> values, Updater updater) {
    update(values, s -> { updater.update(); return null; }, 0);
}

一种替代方法是将更Function<String,Void>改为Consumer<String>,然后可以使用方法参考:

void update(Collection<String> values, Updater updater) {
    update(values, updater::update, 0);
}
void update(Collection<String> values, Consumer<String> fn, int ignored) {
    // some code
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法将'void(MyClass :: *)()'转换为'void(*)()

来自分类Dev

无法将void转换为ICommand

来自分类Dev

无法将void转换为double

来自分类Dev

无法在Java中从void转换为String?

来自分类Dev

Java 错误:void 无法转换为 String

来自分类Dev

将std :: function <void()>转换为void(*)()

来自分类Dev

将 void (*)() 转换为 void (*)(unsigned char)

来自分类Dev

无法解析构造函数 'Order(Java.lang.string,Java.lang.string,Java.lang.string,void,void)

来自分类Dev

无法将(Timer!)-> Void转换为((CFRunLoopTimer?)-> Void)!-将NSTimer扩展转换为Swift 3

来自分类Dev

C:将void(*)(void *)转换为void(*)(char *)

来自分类Dev

无法将类型 '(() throws -> Void?) -> ()' 的值转换为预期的参数类型 '((Void) throws -> Void)?'

来自分类Dev

无法从char *转换为void **

来自分类Dev

无法解析方法 'putExtras (java.lang.string, void)

来自分类Dev

将int转换为void *

来自分类Dev

无法将类型“ void”隐式转换为“ int”?

来自分类Dev

无法将类型“ void”隐式转换为“ x”

来自分类Dev

无法将类型'float'隐式转换为'void'

来自分类Dev

无法将 void 转换为列表,返回已排序的列表

来自分类Dev

无法从pthread中的void *(类名)(void *)类型转换为void *(*)(void *)类型

来自分类Dev

指向成员函数的指针的映射:无法将void(*)转换为void(Object :: *)

来自分类Dev

无法将类型'()-> Void'的值转换为预期的参数类型'(()-> Void)吗?'

来自分类Dev

错误:无法将类型((_,_)-> Void'的值转换为预期的参数类型'(((UIAlertAction)-> Void)?

来自分类Dev

错误无法将 `Void` 类型的值转换为预期的参数类型 `() -> Void` UIAlertController

来自分类Dev

将void方法转换为boolean-java

来自分类Dev

将地址转换为函数:使用“ void * void”

来自分类Dev

将void(__ cdecl MyClass :: *)()转换为void *时出错

来自分类Dev

如何将“ void(MyClass :: *)(int)”转换为“ void(*)(int)”?

来自分类Dev

将void(__ cdecl MyClass :: *)()转换为void *时出错

来自分类Dev

Crystal Lang:了解Void的返回方法类型

Related 相关文章

  1. 1

    无法将'void(MyClass :: *)()'转换为'void(*)()

  2. 2

    无法将void转换为ICommand

  3. 3

    无法将void转换为double

  4. 4

    无法在Java中从void转换为String?

  5. 5

    Java 错误:void 无法转换为 String

  6. 6

    将std :: function <void()>转换为void(*)()

  7. 7

    将 void (*)() 转换为 void (*)(unsigned char)

  8. 8

    无法解析构造函数 'Order(Java.lang.string,Java.lang.string,Java.lang.string,void,void)

  9. 9

    无法将(Timer!)-> Void转换为((CFRunLoopTimer?)-> Void)!-将NSTimer扩展转换为Swift 3

  10. 10

    C:将void(*)(void *)转换为void(*)(char *)

  11. 11

    无法将类型 '(() throws -> Void?) -> ()' 的值转换为预期的参数类型 '((Void) throws -> Void)?'

  12. 12

    无法从char *转换为void **

  13. 13

    无法解析方法 'putExtras (java.lang.string, void)

  14. 14

    将int转换为void *

  15. 15

    无法将类型“ void”隐式转换为“ int”?

  16. 16

    无法将类型“ void”隐式转换为“ x”

  17. 17

    无法将类型'float'隐式转换为'void'

  18. 18

    无法将 void 转换为列表,返回已排序的列表

  19. 19

    无法从pthread中的void *(类名)(void *)类型转换为void *(*)(void *)类型

  20. 20

    指向成员函数的指针的映射:无法将void(*)转换为void(Object :: *)

  21. 21

    无法将类型'()-> Void'的值转换为预期的参数类型'(()-> Void)吗?'

  22. 22

    错误:无法将类型((_,_)-> Void'的值转换为预期的参数类型'(((UIAlertAction)-> Void)?

  23. 23

    错误无法将 `Void` 类型的值转换为预期的参数类型 `() -> Void` UIAlertController

  24. 24

    将void方法转换为boolean-java

  25. 25

    将地址转换为函数:使用“ void * void”

  26. 26

    将void(__ cdecl MyClass :: *)()转换为void *时出错

  27. 27

    如何将“ void(MyClass :: *)(int)”转换为“ void(*)(int)”?

  28. 28

    将void(__ cdecl MyClass :: *)()转换为void *时出错

  29. 29

    Crystal Lang:了解Void的返回方法类型

热门标签

归档