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

buf*_*w76 1 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();
}
Run Code Online (Sandbox Code Playgroud)

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

awe*_*oon 5

根据Java文档:

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

  1. 新的运营商

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

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

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

Thread是一个类,它包含一个String参数构造函数,因此,这是一个有效的匿名类表达式.