在'新'语句之后,花括号会做什么?

Teo*_*tus 2 java

我正在看这个例子,并想知道第一行是做什么的:

private SiteStreamsListener listener = new SiteStreamsListener() {
Run Code Online (Sandbox Code Playgroud)

看起来您可以以这种方式声明其他方法或覆盖方法.例如,我可以做以下事情吗?

ArrayList myList = new ArrayList() {
    @Override String toString()
    {
       <my code here>
    }

    <insert new methods here>
}
Run Code Online (Sandbox Code Playgroud)

k_g*_*k_g 6

这些花括号定义了一个匿名内部类.

这可以让你能够覆盖publicprotected你启动类的方法.您可以使用任何非final类来执行此操作,但对抽象类和接口最有用,它们只能以这种方式启动.

(为了限定最后一句,只使用一个非default方法的接口可以使用Java 8中的lambda语句启动,绕过这种设计方法.)