java - Java 类内部的方法调用返回 "identifier expected after this token"错误

标签 java

当我在 Eclipse 中编写如下代码时:

public class MyClass {
    System.currentTimeMillis();
}

我得到这个编译错误:

Syntax error on token "currentTimeMillis", Identifier expected after this token

如果我将该语句更改为赋值语句,它会起作用:

long time = System.currentTimeMillis();

当然,如果放在方法体内或类体内的 block 内,它不会导致错误。

这是为什么?是否有一些编译器级别的规则规定类主体中只能出现赋值语句或声明?

最佳答案

类主体只能包含声明。

具体来说,§ 8.1.6 of the JLS像这样定义类主体:

A class body may contain declarations of members of the class, that is, fields (§8.3), classes (§8.5), interfaces (§8.5) and methods (§8.4). A class body may also contain instance initializers (§8.6), static initializers (§8.7), and declarations of constructors (§8.8) for the class.

    ClassBody:
      { ClassBodyDeclarationsopt }
ClassBodyDeclarations: ClassBodyDeclaration ClassBodyDeclarations ClassBodyDeclaration
ClassBodyDeclaration: ClassMemberDeclaration InstanceInitializer StaticInitializer ConstructorDeclaration
ClassMemberDeclaration: FieldDeclaration MethodDeclaration ClassDeclaration InterfaceDeclaration ;

如您所见,无论如何那里都没有语句,因此类主体可能不会直接包含语句。

如果您考虑一下,它是有道理的:应该在什么时候执行该代码?没有上下文可以告诉你这件事,所以它没有意义。

关于java - Java 类内部的方法调用返回 "identifier expected after this token"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6151218/

相关文章:

java - 如何在 Netbeans 8.0.15 中注册 Tomcat 服务器

java - Cucumber 5.1.2 没有看到任何功能

java - Spring MVC 中 REST 响应对象的部分 JSON 序列化

java - ivy 解决动态依赖

java - 尝试编写Java程序来播放mp3文件

java - 探针格式化json文件并将其解析为java

java - JPA orm.xml 支持数据库索引

java - 这是适配器模式的正确实现吗?

java - 任意顺序的正则表达式匹配

java - jetty 6 : Unknown Error 99