Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java类循环错误,运行时还是编译时?_Java_Exception_Inheritance_Specifications - Fatal编程技术网

Java类循环错误,运行时还是编译时?

Java类循环错误,运行时还是编译时?,java,exception,inheritance,specifications,Java,Exception,Inheritance,Specifications,我正在阅读JVM规范第二版。在本节()中,ClassCirculartyError被定义为当类是自己的超类或超接口时无法加载时抛出。我无法想象当我编译这样一个类时,java编译器会阻止我,不让我继续。那么如何创建这样一个.class来加载呢 public class TestCycle extends TestCycle{ private String memberVar; } 有人能向我的jar负责人解释一下吗?在Java中,编译的单位是类,因此类很可能在不同的时间被编译,例如,因为类是在不

我正在阅读JVM规范第二版。在本节()中,ClassCirculartyError被定义为当类是自己的超类或超接口时无法加载时抛出。我无法想象当我编译这样一个类时,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中,编译的单位是类,因此类很可能在不同的时间编译,例如,由于类位于单独的库中,所以它们是独立开发的。考虑:

class A {}
那是别人吗

class B {}
现在,A的制造商决定扩展B:

class A extends B {}
B的制造商决定扩展A,但不知道前一个变化,即A的原始定义仍然是:

class B extends A{}

后来,他们意识到新版本的a可用,并将其放入类路径中,从而在加载时产生类循环错误。

您可以通过直接编辑类文件来创建这样的类文件(我的意思是如果您真的想要的话)。因此,尽管它不编译,但可以创建一个包含此类的有效类文件。这就是JVM也会检查它的原因。

您可以通过直接编辑类文件来创建这样的类文件(我的意思是如果您真的想要的话)。因此,尽管它不编译,但可以创建一个包含此类的有效类文件。这就是为什么JVM也会检查它