java中所有的关键字都存储在哪里?是否有任何包来存储关键字集(预定义的东西)因为这些与任何“类(大写C)无关,但“类”(小c)本身就是一个关键字,并且所有原始类型,所有说明符,接口(interface)是关键字。但是它们存储在哪里?绝对不在任何类中(它们必须在某个包或某个地方定义)但是在哪里??
最佳答案
所有关键字都存储在 java 运行时库中的某个位置是值得怀疑的,因为那里不需要它们。
然而,需要它们的地方是在编译器中。
给出JDK langtools repo后快速浏览一下,我发现:
com.sun.tools.javac.antlr.Java.g4
(文本文件)
包含关键字列表:// §3.9 Keywords ABSTRACT : 'abstract'; ASSERT : 'assert'; BOOLEAN : 'boolean'; BREAK : 'break'; BYTE : 'byte'; CASE : 'case'; CATCH : 'catch'; CHAR : 'char'; CLASS : 'class'; CONST : 'const'; CONTINUE : 'continue'; DEFAULT : 'default'; DO : 'do'; DOUBLE : 'double'; ELSE : 'else'; ENUM : 'enum'; EXTENDS : 'extends'; FINAL : 'final'; FINALLY : 'finally'; FLOAT : 'float'; FOR : 'for'; IF : 'if'; GOTO : 'goto'; IMPLEMENTS : 'implements'; IMPORT : 'import'; INSTANCEOF : 'instanceof'; INT : 'int'; INTERFACE : 'interface'; LONG : 'long'; NATIVE : 'native'; NEW : 'new'; PACKAGE : 'package'; PRIVATE : 'private'; PROTECTED : 'protected'; PUBLIC : 'public'; RETURN : 'return'; SHORT : 'short'; STATIC : 'static'; STRICTFP : 'strictfp'; SUPER : 'super'; SWITCH : 'switch'; SYNCHRONIZED : 'synchronized'; THIS : 'this'; THROW : 'throw'; THROWS : 'throws'; TRANSIENT : 'transient'; TRY : 'try'; VOID : 'void'; VOLATILE : 'volatile'; WHILE : 'while';
我不确定该文件是否也包含在分布式 javac 中,因此可以在运行时检索。
-
com.sun.tools.javac.parser.Tokens
(一个普通的java类)
包含一个子类枚举TokenKind
,它保存所有 token 。
虽然这些肯定可以在运行时检索,但它们还包括运算符、文件结束表示等,因此您必须首先过滤它们。
关于java - 有没有什么包可以存储java关键字集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35706201/