假设我在 Java 8 中有以下功能接口:
interface Action<T, U> {
U execute(T t);
}
在某些情况下,我需要一个没有参数或返回类型的操作。所以我写了这样的东西:
Action<Void, Void> a = () -> { System.out.println("Do nothing!"); };
但是,它给了我编译错误,我需要把它写成
Action<Void, Void> a = (Void v) -> { System.out.println("Do nothing!"); return null;};
这是丑陋的。有没有办法摆脱 Void
类型参数?
原文由 Wickoo 发布,翻译遵循 CC BY-SA 4.0 许可协议
您所追求的语法可以通过一个将
Runnable
转换为Action<Void, Void>
的小辅助函数来实现(例如,您可以将其放在Action
中):