JDK 19中使用record关键字创建类报错,该如何解决?
解决Java Record类报错'class' or 'interface' expected的问题
你遇到的核心问题是项目的Java语言版本配置未正确匹配JDK19——Record是Java 16才正式引入的特性,若编译环境或IDE的语言版本低于16,会将record识别为非法关键字,从而触发该错误。以下是具体解决方法:
1. 检查IDE的语言版本设置(以IDEA为例)
- 打开
File > Project Structure - 在
Project Settings > Project中,确保Project SDK选择JDK19,Project language level设置为19 (Preview) - Pattern matching for switch或至少16 - Records, patterns, etc. - 切换到
Modules标签页,确认所有模块的Language level与上述配置一致
2. 检查构建工具的版本配置(Maven/Gradle)
Maven
在pom.xml中添加或修改编译插件配置:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <source>19</source> <target>19</target> </configuration> </plugin> </plugins> </build>
Gradle
在build.gradle中设置版本参数:
plugins { id 'java' } java { sourceCompatibility = JavaVersion.VERSION_19 targetCompatibility = JavaVersion.VERSION_19 }
3. 清理IDE缓存(可选)
若配置修改后仍报错,可能是IDE缓存导致的识别异常:
- IDEA:点击
File > Invalidate Caches...,选择Invalidate and Restart
另外需确认你的Person record处于合法位置:它可以是顶层类,或嵌套在静态内部类、局部类中,但不能定义在非静态内部类里。
内容的提问来源于stack exchange,提问作者Quinn Rutherford
相关产品推荐
相关产品推荐

