我需要帮助理解这个java代码

我需要帮助理解这个java代码,java,class,oop,anonymous-class,anonymous-inner-class,Java,Class,Oop,Anonymous Class,Anonymous Inner Class,下面是Swing教程,我遇到了以下代码片段: EventQueue.invokeLater(new Runnable() { @Override public void run() { SimpleExample ex = new SimpleExample(); ex.setVisible(true); } }); EventQueue.invokeLaterparams内部发生了

下面是Swing教程,我遇到了以下代码片段:

    EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            SimpleExample ex = new SimpleExample();
            ex.setVisible(true);
        }
    });

EventQueue.invokeLater
params内部发生了什么?

invokeLater
需要类型为
Runnable
的参数,即实现
Runnable
接口的类的实例。在本例中,此方法接收实现
Runnable
的匿名类的实例

Runnable
只有一个方法-
run
,所以匿名类实例必须实现的就是
run
方法

在Java 8中,有一个更短的语法,使用lambda表达式:

EventQueue.invokeLater(
    () -> {
        SimpleExample ex = new SimpleExample();
        ex.setVisible(true);
    }
);
invokeLater()
的参数必须实现
Runnable
,在本例中是一个-a类,没有名称,并且(在本例中)只创建了一个对象,显式地实现了
Runnable
接口。这主要是一个Java黑客,用于允许在遗留代码中引用方法。在新代码中,您可以在大多数情况下使用和,例如

EventQueue.invokeLater( () -> {
        SimpleExample ex = new SimpleExample();
        ex.setVisible(true);
} );

您介绍的这段特定代码将在
EventQueue
中运行
run()
中的代码。

阅读有关匿名类的内容。这是Runnable类的匿名实现。可能有用哦,哇,太酷了。如果可以的话,我会在10分钟内接受,这为我解决了所有问题,谢谢。