gpt4 book ai didi

java - 在同一包中不同名称的单独文件中找不到包私有(private)(默认)类

转载 作者:行者123 更新时间:2023-11-30 03:22:17 24 4
gpt4 key购买 nike

我有一个名为“test”的包,其中有一个公共(public)类,其中包含名为 ABC.java 的文件中的 main 方法。

package test;

public class ABC{
public static void main(String[] args) {
new T1();
}
}

在同一个包“test”中,我在名为 T.java 的文件中有两个默认类 T1 和 T2

package test;

class T1 {}
class T2 {}

当我尝试编译它时,它说找不到符号 new T1()。当我将 T1 放入单独的文件 T1.java 中时,它可以正常编译。为什么java无法在同一个包中找到包私有(private)类。

最佳答案

如果没有找到.class文件,javac将自动编译您正在编译的文件中使用的所有链接文件。就像你的例子ABC.java。但需要注意的一点是,javac 不会搜索所有扩展名为 .java 的文件进行编译。但它会查找与类同名的文件名。就像你的例子T1

因此,如果您先编译T.java,然后再编译ABC.java,它将按预期运行。但是,如果您编译 ABC.java 而不是 T.java,编译器将找不到 T1.class,然后它将查找 T1。 java,但它也不会找到它,这会给你一个错误。另一方面,如果您将 T.java 重命名为 T1.java,它将按预期工作。

关于java - 在同一包中不同名称的单独文件中找不到包私有(private)(默认)类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31065523/

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