我目前正在为java编写一个编译器。JLS说"类层次结构必须是非循环的。"但是,的情况又如何呢
B extends A
C extends A
D extends B
D extends C
这是一个非循环图,但无效。我如何检测这种情况?我目前正在使用BFS,每当我看到后边缘时,我都知道有一个循环,但BFS算法无法检测到上述情况。
D
从多个类继承,在Java中不允许多重继承。这就是检测它的方法。
如果您的树表示类继承层次结构,那么在向树中插入新的X extends
关系之前,只需添加一个检查,以确保类X还没有extend
或其他类。