无法在同一个包中的不同名称的单独文件中找到包私有(默认)类

时间:2015-06-26 05:23:54

标签: java

我有一个名为" test"并且有一个公共类,它包含一个名为ABC.java的文件中的main方法。

package test;

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

在同一个包装中"测试"我在名为T.java

的文件中有两个默认类T1和T2
package test;

class T1 {}
class T2 {}

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

2 个答案:

答案 0 :(得分:2)

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

一样

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

答案 1 :(得分:0)

Java中,当类文件名( T1.java )与没有public关键字的类名( T1 )相同时,这个类在这个包( test )的类下是公共的。

相关问题