1. 概述

在本篇中,我们来聊一聊 Java 开发中一个非常常见的编译错误:"class, interface, or enum expected"。这个错误多见于刚接触 Java 的新手,但有时候老手也可能会因为粗心栽在这个地方。

我们通过几个典型例子来看看这个问题是如何发生的,以及如何快速定位和修复。

2. 错误的花括号位置

这个错误最常见的原因就是花括号 } 放错了位置。可能是类定义结束后多写了一个 },也可能是把方法写到了类的外面。

2.1 多了一个花括号

来看下面这段代码:

public class MyClass {
    public static void main(String args[]) {
      System.out.println("Baeldung");
    }
}
}

编译时报错如下:

/MyClass.java:6: error: class, interface, or enum expected
}
^
1 error

解决办法:删掉多余的 } 即可。


2.2 方法写在类外面

再来看一个更常见的场景:

public class MyClass {
    public static void main(String args[]) {
        //Implementation
    }
}
public static void printHello() {
    System.out.println("Hello");
}

编译报错如下:

/MyClass.java:6: error: class, interface, or enum expected
public static void printHello()
^
/MyClass.java:8: error: class, interface, or enum expected
}
^
2 errors

踩坑提示printHello() 方法写在了类定义之外,Java 不允许这种写法。

解决办法:把方法挪进类里面,调整花括号位置即可。

public class MyClass {
    public static void main(String args[]) {
        //Implementation
    }

    public static void printHello() {
        System.out.println("Hello");
    }
}

3. 小结

本文通过两个常见场景解释了 Java 编译器报错 "class, interface, or enum expected" 的原因:

  • ✅ 多余的花括号
  • ❌ 方法或代码块写在类外部

虽然问题简单,但在重构代码或者复制粘贴时很容易中招。遇到这个错误时,优先检查花括号的匹配和代码块的位置即可快速定位问题。


原始标题:Java Compiler Error: "class, interface, or enum expected" | Baeldung