为什么这段代码不能在Java中运行?错误:<标识符>预期

要调用内部类的函数,我只需要一个内部类的对象。但是如果我已经创建了对象,为什么我不能在任何我想要的地方调用内部类的方法?试图暗示的错误是什么?

class Outer 
{
    int x;
    
    class Inner // creating an Inner class
    {
        public void display()
        {
            System.out.println("Hello from Inner class"+x);
        }
    }
    
    Inner i = new Inner();
    i.display(); // This is where the error comes. Why do I have to create a method to call
                 // methods of my inner class. Why Can't I call it anywhere I want?
}


public class Main
{
    public static void main(String[] args) 
    {
        System.out.println("Hello World");
    }
}

回答

那么为什么编译器会拒绝这段代码呢?

因为代码语法无效如Java,并且Java编译器所需的拒绝代码是无效的。

Java 语言规范说,唯一可以立即嵌套在类中的内容是成员声明或初始化程序块。成员声明是:

  • 字段声明
  • 嵌套类、接口、枚举等
  • 方法
  • 构造函数

初始化程序块是static初始化程序块或实例初始化程序块。

一个典型的语句(就像你试图在那里插入的那个)既不是成员声明也不是块。


Java 语言规范的相关部分是JLS 8.1.6


以上是为什么这段代码不能在Java中运行?错误:<标识符>预期的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>