我需要帮助理解这个java代码
下面是Swing教程,我遇到了以下代码片段:我需要帮助理解这个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内部发生了
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分钟内接受,这为我解决了所有问题,谢谢。