gpt4 book ai didi

Java ClassCircularityError ,运行时还是编译时?

转载 作者:行者123 更新时间:2023-12-01 19:04:17 29 4
gpt4 key购买 nike

我正在阅读 JVM 规范第二版。在本节( Loading )中,ClassCircularityError 被定义为在无法加载类(如果该类是其自己的父类(super class)或超接口(interface))时抛出。我无法想象/想象它,因为当我编译这样一个类时,java编译器会在那里阻止我并且不让我继续。那么如何创建这样一个.class来加载?

public class TestCycle extends TestCycle{
private String memberVar;
}

有人可以向我的 jar 头解释一下吗?

最佳答案

在Java中,编译的单位是类,因此类很可能在不同的时间编译,例如由于类位于不同的库中而独立开发。考虑:

class A {}

那就找别人吧

class B {}

现在,A 的制造者决定扩展 B:

class A extends B {}

B 的制作者决定扩展 A,但不知道之前的更改,即仍然具有 A 的原始定义:

class B extends A{}

后来,他们意识到 A 的新版本可用,并将其放入类路径中,导致加载时出现 ClassCircularityError。

关于Java ClassCircularityError ,运行时还是编译时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10765372/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com