You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 9模块名禁用字符及替代方案咨询,含下划线合法性疑问

Java 9模块名的禁用字符及命名建议

嘿,这个问题问得特别实用!我来给你把JPMS(Java平台模块系统)模块名的规则说清楚,包括禁用字符、允许的情况以及最佳实践:

核心规则:模块名的语法要求

Java 9的模块名本质上是由一个或多个合法的Java标识符组成,标识符之间用点(.)分隔。而这些标识符的规则和Java包名的标识符规则完全一致。

明确禁用的字符

以下字符绝对不能出现在模块名里:

  • 你提到的连字符(-):确实是严格禁用的,官方明确建议用点(.)替代
  • 所有空白字符:比如空格、制表符、换行符等
  • 各类特殊符号:!、@、#、%、^、&、*、(、)、+、=、[、]、{、}、|、\、;、:、"、'、<、>、,、?、/
  • 另外,标识符不能以数字开头,也不能使用Java的关键字(比如public、class、module这些)

关于你问的下划线(_):它是允许作为标识符一部分的,但官方并不推荐使用。因为Java社区的惯例是模块名尽量和传统包名风格保持一致——用小写字母、点分隔,语义化命名,避免下划线。

最佳命名实践

  • 优先采用反向域名的命名方式(比如把原命名com.example.user-service改成com.example.user.service),和包名的命名逻辑对齐,提升可读性和规范性
  • 模块名要语义化,尽量清晰表达模块的功能或职责,避免过于模糊的命名
  • 如果你是从非模块化项目迁移过来,记得把原来命名里的连字符替换成点,避免编译报错

内容的提问来源于stack exchange,提问作者matandked

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 09:47:28