【发布时间】:2018-08-01 20:24:24
【问题描述】:
我一直在阅读 SwingUtilities.invokeLater() 方法,并且在很大程度上了解它的用途。在处理 GUI 组件时,对这些组件的所有操作都需要在同一个 Event 线程上完成,以避免竞争等。
但是,我认为许多问题未能展开,代码实际上是如何工作的?看着它:
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
//method body code
}
);
我的问题是,这是如何工作的?我们向 invokeLater() 方法传递了一个新的 Runnable obj(我认为 Runnable 无论如何都是一个接口,我们如何实例化一个构造函数new Runnable()?)然后在方法调用中附加整个方法体:{//Method body code});。这怎么可能?我从未见过一个方法将整个方法体作为其参数之一。
当我尝试用我自己的方法复制它时,我收到错误消息,表明我无法在方法参数中提供整个方法主体。因此,我回到我最初的问题,即这实际上是如何工作的。也许我想太多/忽略了,但非常感谢任何帮助。
谢谢。
【问题讨论】:
-
通过使用匿名类,这是我最喜欢的 SO Answers 之一。我一直使用它来将参数传递给 Anonymous 类。