execute是SwingWorker的方法。您所看到的是anonymous class正在实例化并立即调用其execute方法。
我不得不承认我对代码编译感到有些惊讶,因为它似乎将execute的结果分配给worker变量,文档告诉我们execute是void函数。
如果我们稍微解构一下代码,它就会更清晰。首先,我们创建一个扩展SwingWorker的匿名类并同时创建它的一个实例(这是括号中的大部分):
SwingWorker tmp = new SwingWorker() {
public ImageIcon[] doInBackground() {
final ImageIcon[] innerImgs = new ImageIcon[nimgs];
...//Load all the images...
return imgs;
}
public void done() {
//Remove the "Loading images" label.
animator.removeAll();
loopslot = -1;
try {
imgs = get();
} ...//Handle possible exceptions
}
};然后我们调用execute并将结果分配给worker(在我看来,它不应该编译):
SwingWorker worker = tmp.execute();更新:事实上,我尝试了它并且它doesn't compile。所以不是很好的示例代码。这将编译:
SwingWorker worker = new SwingWorker() {
public ImageIcon[] doInBackground() {
final ImageIcon[] innerImgs = new ImageIcon[nimgs];
...//Load all the images...
return imgs;
}
public void done() {
//Remove the "Loading images" label.
animator.removeAll();
loopslot = -1;
try {
imgs = get();
} ...//Handle possible exceptions
}
};
worker.execute();