gpt4 book ai didi

java - 在Java中编译类文件一直令人困惑

转载 作者:搜寻专家 更新时间:2023-11-01 03:04:54 25 4
gpt4 key购买 nike

我有三个 .java 文件,A.javaB.javaC.java

A.java:

public class A {

public static void main(String[] args) {

A a = new A();
B b = new B();

a.display();
b.display();
}


public void display() {

System.out.println("In A");
}
}

B.java:

public class B {

public void display() {

System.out.println("In B");

C c = new C();
c.display();
}
}

C.java:

public class C {

public void display() {

System.out.println("In C");
}
}

程序运行良好。我将其编译为:

javac A.java

这生成了 A.classB.classC.class 文件。

然后运行它:

java A

它的输出:

In A
In B
In C

现在问题来了:
当我删除A.classC.class B.java,重新编译 A.java:

javac A.java

这只生成A.classB.class 已经存在,没有被删除。
但是为什么这次没有生成C.class呢?

注意:C.class是在B.classA.class一起删除时生成的和 C.class。或者,如果我在 B.java 文件预编译中进行任何更改。

最佳答案

当你编译 A 时,它有一个对 B 的引用,所以它也必须编译它。 A 不知道 C 所以它不会编译它。

我建议您使用 IDE 或诸如 maven 之类的构建工具,因为您将获得更复杂的项目,这将成为试图跟踪哪些文件需要重新编译的噩梦当您更改文件时。

关于java - 在Java中编译类文件一直令人困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26127893/

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