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