是否可以从匿名 class 调用多个方法?

Is it possible to call several methods from an anonymous class?

我想知道这是否可能以某种方式出现 java 7 或 8

public class App{
    public static void main(String[] args) {
        new Thread(){
            public void run(){
                //Something
            }
        }.start().setName("Something") //Here!!
        //Something
    }
}

在您的示例中,start() returns void 是不可能的。但是,取决于您调用的方法的实现。在一些设计中,我们通常设计(Builder pattern/ Fluent)方法returnsthis,那么,method chaining是可能的。对于你的例子,你可以像下面那样做。

Thread t = new Thread() {
    public void run() {
    }
};
t.setName("Something");
t.start();

不,这是不可能的,因为 start()setName() returns 线程都不是。创建的匿名class,是Thread的子class,所以可以赋值给这样一个变量:

Thread thread = new Thread {
    // something
};
thread.setName(...);
thread.setPriority(...);
thread.start();

或使用函数符号:

Thread thread = new Thread( () -> { ... } );
thread.setName(...);
thread.setPriority(...);
thread.start();

和我的首选(没有创建额外的 class),使用方法参考:

    Thread thread = new Thread(this::runInThread);
    thread.setName(...);
    thread.setPriority(...);
    thread.start();
    ...
}

private void runInThread() {
    // something to run in thread
}

添加setPriority()只是为了有更多的电话

如果您只想在一条语句中声明、命名和启动线程,只需使用指定线程名称的构造函数:

new Thread("Something") { ... }.start();