我刚遇到了这个“bug”,但我不确定它是否是有意的:
public static Object someMethod(){
assert SwingUtilities.isEventDispatchThread();
return new Object();
}
public static void main(String[] args){
SwingUtilities.invokeLater(() -> someMethod().toString());//First Example
SwingUtilities.invokeLater(someMethod()::toString);//Second Example
}
在第一个示例中,someMethod
在 swing 线程上执行,但在第二个示例中却没有,在我看来,它应该有。
这是一个错误还是故意的?
methodResult ::toString
,这相当于() -> methodResult.toString()
。 - PshemosomeMethod()
本身在main
主体中被评估(因此,在main
线程中),然后将对结果对象的toString
方法的引用传递给invokeLater
。 - RealSkepticSystem.out::println
转换为 Lambda 表达式。 - Holger