gpt4 book ai didi

java - 没有显式导入的类之间的依赖关系

转载 作者:行者123 更新时间:2023-12-04 21:04:08 27 4
gpt4 key购买 nike

让我们考虑一下 Java 中这个简单的类层次结构:

A 类:

package a;

import b.B;

public class A {
public B a() {
return new B();
}
}

B 类:

package b;

public class B {
public void b() {
System.out.println("B!");
}
}

主类:

import a.A;

public class Main {
public static void main(String[] args) {
A a = new A();
a.a().b();
}
}

可以看出,只有 Main 类直接导入了 A。但是,我们正在调用从 A.a() 返回的方法 b。我的问题是,虽然我们在 MainB 之间没有直接导入依赖,但它们仍然被认为是直接依赖吗?例如,当我在分析类之间的依赖关系时?

最佳答案

是的,那是直接依赖。您不必向编译器声明它,因为它可以查看返回 B 的方法签名,并会为您解析该类。

如果编译器找不到 B(或您要对其调用的方法),您将收到有关缺少类的编译时错误。

在运行时,当您加载一个类时,它还会加载方法签名中引用的所有类(如果找不到则失败)。

另请注意,import 语句本身仅供编译器使用。它们对生成的类文件没有影响。这意味着如果您导入十个您随后不使用的类,它们将不会成为依赖项(编译器仍会提示它们在您的导入部分中丢失,但它们不会在运行时加载)。

关于java - 没有显式导入的类之间的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50326252/

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