无法理解声明

时间:2011-11-19 02:25:44

标签: java

我有一段代码片段

public class ThreadStates {
    private static Thread t1 = new Thread("T1") {
        public void run() {
            try {
                sleep(2);
                for (int i = 100; i > 0; i--) ;
            } catch (InterruptedException ie) {
                ie.printStackTrace();
            }
        }
    }
}

.......其余代码如下。

什么类型的declation是第1步。我可以看到我们在ThreadStates类中没有继承的Thread类,那么为什么run()方法声明即将到来。请澄清正在发生的事情。

3 个答案:

答案 0 :(得分:3)

您创建了一个继承自Thread的匿名内部类(请注意{后面的new Thread()。您将为此类提供一个run方法,并将其存储在t1中。< / p>

答案 1 :(得分:3)

它被称为匿名内部类。当你说'new Thread(“T1”){...}'时,你正在有效地定义一个新的Thread子类。

Is this a variation of an anonymous inner class? http://docs.oracle.com/javase/tutorial/java/javaOO/innerclasses.html

答案 2 :(得分:0)

当您调用直接实现Runnable类的类时,您会立即继承该类所执行的所有方法。 Thread是实现Runnable的类之一,它使您实现了一个抽象的run()方法。

这就是为什么它会在那里显示run() nethod。