Java实现是否必须支持以不是ASCII的Unicode字母开头的标识符?

时间:2015-04-21 21:31:58

标签: java unicode

从Java语言规范Java SE 8 Edition(第3.8节)看来,Java字母似乎必须包含ASCII字母

  

“Java字母”包括大写和小写ASCII拉丁字母   A-Z(\ u0041- \ u005a)和a-z(\ u0061- \ u007a),以及历史   原因,ASCII下划线(_,或\ u005f)和美元符号($,或   \ u0024)。 $符号只能用于机械生成   源代码,或者很少访问遗留的预先存在的名称   系统

但可能不包含其他Unicode字母(因为以下句子包含可能而非必须):

  

可以从整个Unicode字符集中绘制字母和数字,   它支持当今世界上使用的大多数编写脚本,   包括中文,日文和韩文的大套。这个   允许程序员在他们的程序中使用标识符   用他们的母语写成。

即使它不支持标识符中的非ASCII字母,实现是否符合规范是否正确?

如果是这种情况,那么句子“这允许程序员在他们的程序中使用用他们的母语编写的标识符。”没有多大意义 - 因为它建议使用哪些功能可能并非所有实现都支持。

1 个答案:

答案 0 :(得分:2)

我认为你在这里误解了“可能”一词的用法。该句子应被理解为“它是允许从整个Unicode字符集中绘制字母和数字,......”

因此,实现必须支持整个Unicode集。