带有一个元素的Java布尔数组

时间:2013-10-17 14:16:57

标签: java arrays swt eclipse-rcp final

所以我在搜索org.eclipse.ui.internal.Workbench时遇到了这段代码:

        final boolean[] initOK = new boolean[1];

        if (getSplash() != null) {

            final boolean[] initDone = new boolean[] { false };
            final Throwable[] error = new Throwable[1];
            Thread initThread = new Thread() {
                /*
                 * (non-Javadoc)
                 * 
                 * @see java.lang.Thread#run()
                 */
                public void run() {
                    try {
                        // declare us to be a startup thread so that our
                        // syncs will be executed
                        UISynchronizer.startupThread.set(Boolean.TRUE);
                        initOK[0] = Workbench.this.init();
                    } catch (Throwable e) {
                        error[0] = e;
                    } finally {
                        initDone[0] = true;
                        display.wake();
                    }
                }
            };
            initThread.start();

          ..............
       }

仅使用一个元素创建数组的目的是什么?它更快吗?我绝对错过了一些东西。

1 个答案:

答案 0 :(得分:3)

使用此方法的优点是无法修改数组(因为它们是final),但是,它们的内容可以更改。

一个有用的例子是你可以使用这些数组并修改它们在匿名内部类中的第一个条目,而不必创建它们(static)字段。


如上面的评论中所述,另一个用例是该数组可用于将其传递给期望数组类型的方法。