匿名类的构造函数调用是否具有参数

时间:2016-01-21 13:20:02

标签: java constructor

public static void main(String[] args) {
    Thread myThread = new Thread("YOYO") {
        public void run() {
            Thread t = Thread.currentThread();
            System.out.println(t.getName());
        }
    };

    myThread.start();
}

任何人都可以解释线程类构造函数new Thread("YOYO")的调用旁边的花括号代码块是什么类型的功能吗?据我所知,它不应该是匿名类,因为如果它是匿名类,Thread旁边的括号应为空()而不是("YOYO")

2 个答案:

答案 0 :(得分:5)

根据Java docs

  

匿名类表达式包含以下内容:

     
      
  1. 新运营商

  2.   
  3. 要实现的接口的名称或要扩展的类。在此示例中,匿名类正在实现接口HelloWorld。

  4.   
  5. 包含构造函数参数的括号,就像普通的类实例创建表达式一样。注意:实现时   一个接口,没有构造函数,所以你使用一对空   括号,如本例所示。

  6.   
  7. 一个正文,它是一个类声明体。更具体地说,在正文中,方法声明是允许的,但语句不是。

  8.   

Thread是一个类,它包含constructor with a String parameter,因此,这是一个有效的匿名类表达式。

答案 1 :(得分:3)

这是一个匿名的内部阶级..

" YOYO"不是名字,它只是你传递给构造函数的参数,就是全部。