如何解析非静态方法无法从静态上下文中引用?

时间:2015-10-18 11:22:19

标签: java non-static

class Base {

    Base show() {
        System.out.println("Base");
        return new Base();
    }

    class Child4 extends Base {

        Child4 show() {
            System.out.println("Child4");
            return new Child4();
        }

    }

    public static void main(String... s) {
        Child4 C1 = new Child4();
        C1.show();
    }

}

2 个答案:

答案 0 :(得分:0)

在您的示例中,Child4是类Base的非静态内部类(有关内部类的文档,请参阅here)。这意味着您需要一个类Base的实例才能实例化类Child4的对象。

由于在您的示例中,Child4实例无法访问外部Base实例,因此似乎无意使用非静态内部类。你应该用

声明这个内部类是静态的
static class Child4 extends Base {

这样,对new Child4的调用将从main静态上下文中合法化。

答案 1 :(得分:0)

你可以这样做:

"title": "\u3010\u558b\u308b\u732b\u3011\u5bdd\u307c\u3051\u3066\u8a00\u8449\u3092\u9593 \u9055\u3048\u305f\u3051\u3069\u3001\u8a00\u3044\u76f4\u3057\u305f\u3046\u3061\u306e\u732b\u304c \u6551\u3044\u3088\u3046\u304c\u306a\u3044\u2026\u53ef\u611b\u3055\u3067\u3010\u30e1\u30ed\u308b \u3011"