代码之家  ›  专栏  ›  技术社区  ›  e-mre

Java编译器如何知道如何编译foreach语句

  •  0
  • e-mre  · 技术社区  · 6 年前

    “foreach”是Java语言的一个关键字,当编译器在源代码中遇到这个关键字时,它知道这个关键字后面的集合必须实现“iterable”接口。

    想想过去的一个假设点,当时只有Java编译器(可能是用C或C++编写的),Java框架还没有编译。Java.lang包及其所有内容尚未编译,因此当时没有可移植的接口。Java编译器将从源代码编译Java.lang包的源代码,并在将来为iterable接口构建字节码。此时,Java编译器必须了解iterable接口(因为它是语言规范的一部分),以便能够编译使用foreach迭代器的源代码。这是如何做到的?

    0 回复  |  直到 6 年前
        1
  •  0
  •   Cpt Kitkat Anu    5 年前

    首先,” foreach “不是java关键字。请搜索” extended for loop in java ". 第二件事,java中的接口只是为了抽象真正的实现。当我们有真正的实现类时,这不是实现接口所必须的。但是,为了遵循良好的设计原则,如SOLID原则,我们首先为抽象的实际实现以及java中的多类层次结构创建接口。 关键字不实现接口。如果java关键字实现并引用任何java代码,那么它肯定与引导相关,这意味着java编译器是用java语言编写的。对您的长期问题的总体回答是,您需要学习编译器构造、构建JVM语言、引导等。