这个java .execute()方法调用是什么意思?

前端之家收集整理的这篇文章主要介绍了这个java .execute()方法调用是什么意思?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在阅读sun java教程,我在这里看到了这个页面

How to Make an Applet

标题小程序中的线程”下,我找到了这段代码

  1. //Background task for loading images.
  2. SwingWorker worker = (new SwingWorker<ImageIcon[],Object>() {
  3. public ImageIcon[] doInBackground() {
  4. final ImageIcon[] innerImgs = new ImageIcon[nimgs];
  5. ...//Load all the images...
  6. return imgs;
  7. }
  8. public void done() {
  9. //Remove the "Loading images" label.
  10. animator.removeAll();
  11. loopslot = -1;
  12. try {
  13. imgs = get();
  14. } ...//Handle possible exceptions
  15. }
  16.  
  17. }).execute();
  18. }

首先,我是新的,所以如果这是一个愚蠢的问题,我很抱歉.但是我从来没有听说过“.excecute()”.我不明白,我无法从谷歌找到任何关于它的东西.我看到这里是……一个匿名的内部阶级? (请纠正我),它正在启动一个加载图像的线程.我以为通过调用start()来调用run()方法?请帮我清除这种困惑.

解决方法

execute是SwingWorker的一种方法.您所看到的是 anonymous class被实例化并立即调用其execute方法.

我不得不承认我对代码编译感到有些惊讶,因为它似乎是将执行结果赋给worker变量,文档告诉我们execute是一个void函数.

如果我们稍微解构一下代码,那就更清楚了.首先,我们创建一个扩展SwingWorker的匿名类并同时创建它的一个实例(这是括号中的大部分):

  1. SwingWorker tmp = new SwingWorker<ImageIcon[],Object>() {
  2. public ImageIcon[] doInBackground() {
  3. final ImageIcon[] innerImgs = new ImageIcon[nimgs];
  4. ...//Load all the images...
  5. return imgs;
  6. }
  7. public void done() {
  8. //Remove the "Loading images" label.
  9. animator.removeAll();
  10. loopslot = -1;
  11. try {
  12. imgs = get();
  13. } ...//Handle possible exceptions
  14. }
  15.  
  16. };

然后我们调用execute并将结果赋给worker(在我看来,这不应该编译):

  1. SwingWorker worker = tmp.execute();

更新:事实上,我尝试了它,它doesn’t compile.所以不是很好的示例代码.这将编译:

  1. SwingWorker worker = new SwingWorker<ImageIcon[],Object>() {
  2. public ImageIcon[] doInBackground() {
  3. final ImageIcon[] innerImgs = new ImageIcon[nimgs];
  4. ...//Load all the images...
  5. return imgs;
  6. }
  7. public void done() {
  8. //Remove the "Loading images" label.
  9. animator.removeAll();
  10. loopslot = -1;
  11. try {
  12. imgs = get();
  13. } ...//Handle possible exceptions
  14. }
  15.  
  16. };
  17. worker.execute();

猜你在找的Java相关文章