这段代码意味着什么?

时间:2012-02-06 11:09:24

标签: java

匿名类new Runnable(){之前没有标识符或声明的第二个块下面的run()是什么意思:

        public BackgroundThread(final Runnable runnable)
        {
            super(new Runnable() {

                final Runnable val$runnable;

                public void run()
                {
                    Process.setThreadPriority(10);
                    runnable.run();
                }


                {
                    runnable = runnable1;
                    super();
                }
            });
        }

编辑:是的,它是反编译的代码。

2 个答案:

答案 0 :(得分:14)

这是instance initializer - 被称为构造函数的一部分。在匿名内部类中,您无法显式声明构造函数,因此有时会使用实例初始值设定项。在这种情况下,它是毫无意义的,因为run方法可以直接使用runnable - 它仍然可以同时捕获。

(这段代码看起来并不完整或有效,实际上 - 假设实例初始化程序提到runnable1并没有出现在其他地方。我也不希望实例初始化程序包含{ {1}}调用。这可能是反编译的代码吗?)

答案 1 :(得分:2)

这是一个初始化块。它被编译到每个构造函数中。

请参阅tutorial中的“初始化实例成员”。