java - Local Class instance creation expression occurs in a static context - compilation error? - Stack Overflow

Consider the following excerpt from JLS: §15.9.2. Determining Enclosing InstancesIf C is a local class,

Consider the following excerpt from JLS: §15.9.2. Determining Enclosing Instances

  • If C is a local class, then:
    • If C occurs in a static context, then i has no immediately enclosing instance.

    • Otherwise, if the class instance creation expression occurs in a static context, then a compile-time error occurs.

    • Otherwise, let O be the immediately enclosing class of C. Let n be an integer such that O is the n'th lexically enclosing type declaration of the class in which the class instance creation expression appears.

      The immediately enclosing instance of i is the n'th lexically enclosing instance of this.

The applicable code that I can think of - what the clause is trying to say is following:

class Outer {
    void instanceMethod() {
        class LocalNonStaticContext {
            void print() {
                System.out.println("Has enclosing instance of Outer.");
            }
        }
        new LocalNonStaticContext().print(); // Valid because we're in a non-static context.
    }

    static void staticMethod() {
        // Compile-time error: LocalNonStaticContext requires an enclosing instance.
        // new LocalNonStaticContext();
    }
}
  • But this seems too naive - as it is understood that scope of a local class is limited to method in which it is declared - hence it is not possible to invoke it from any other method.

What can be the scenario that this clause is trying to call out - for the Compilation error to take place - that it is trying to prevent?

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745587757a4634645.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信