java: 包内的类不能引用默认包中的类

今天学习的时候,发现一个问题:当一个位于某个包中的类 (代码顶端 有 package xxx;) 访问 默认包中的类 (代码顶端没有 pacakge xxx;) 时, 代码检查通不过。

我试验了一下:

建立B.java,定义 class B:

1
2
3
4
5
6
7
class     B
{
       public     void     print()
       {
         System.out.println(     "This is an object of B class."     );
       }
}

建立A.java,定义class A,A在test命名空间中,引用B:

 1 package test;
 2
 3 class A 
 4 { 
 5   public static void main(String [] args) 
 6   { 
 7     B b = new B(); 
 8     b.print(); 
 9   }
 10 }

javac B.java A.java 发现不管A.java中是否 import B ,编译都不通 过,看来是javac的限制。

通过网上搜索发现,用java 1.2, 1.3时,是可以从包中引用默认包中的类 的,但java 1.4之后就不行了:Java 1.4兼容文档 中有说明,并建议把所 有在未命名的名字空间(默认包)中的类放到某个命名空间中。

所以,平时编程良好的编程习惯和包的命名对程序员来说很重要的。


你可能感兴趣的:(java: 包内的类不能引用默认包中的类)