java - 有没有什么包可以存储java关键字集

标签 java

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/

相关文章:

java - 将参数数据从 JQuery/Ajax 调用传递到 Jersey Web 服务

java - 使用谷歌分析 Android 桌面应用程序

java - 如何使用 while 循环将用户输入输入到数组中,同时保持某些数字不变

java - 如何使用注释在 spring batch 中运行多个作业

java - 我如何按字母顺序排序此列表,需要帮助

java - 我可以使用 Gson 来序列化方法本地类和匿名类吗?

java - 如何在不同端口上使用 memcached

java - 如何隐藏 vaadin 树表中的展开/折叠图标?

java - 还有什么可以在java中抛出ClassCastException?

java - 如何使用 java 将 PNG 文件转换为 PDF?