我已经用 Java 制作了这个例子,但我认为(未经测试)它适用于其他(所有?)语言。
你有 2 个文件。首先,M.java
:
public class MType {
XType x;
MType() {x = null;}
}
其次,另一个文件(在同一目录中)XType.java
:
public class XType {
MType m;
public XType(MType m) {this.m = m;}
}
好的,这是一个糟糕的编程,但如果你运行javac XType
它 compiles: 编译,即使MType
因为XType
需要它。但是……MType
需要XType
……那是如何工作的?编译器如何知道发生了什么?
我想知道编译器(javac 或您知道的任何其他编译器)如何管理这种情况,而不是如何避免这种情况。
我问是因为我正在编写一个预编译器,我想管理这种情况。