首页 > 解决方案 > 创建对象时声明方法

问题描述

为什么第一种方法是正确的,而第二种方法不是?


第一种方式:

new Object() {
    public void a() {
        /*code*/
    }
}.a();

第二种方式:

Object object = new Object() {
    public void a() {
        /*code*/
    }
};

object.a();

我在哪里可以找到有关它的更多信息?

标签: javaobjectmethodsanonymous-classanonymous-inner-class

解决方案


java.lang.Object没有声明方法 (2),而类实例创建表达式a返回的匿名类有 (1)。 new Object() { public void a() {} }

使用 Java 10 的局部变量类型推断( var) 使第二个选项与第一个选项一样有效。

var object = new Object() {
    public void a() {}
};
object.a();

推荐阅读