为什么这段代码不能在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