用Eclipse写程序时,发现一个问题:当一个位于某个包中的类 (代码顶端 有 package xxx;) 访问 默认包中的类 (代码顶端没有 pacakge xxx;) 时, 代码检查通不过。
我怀疑是否Eclipse对此做了限制,于是就用 Emacs 试验了一下:
建立B.java,定义 class B:
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兼容文档 中有说明,并建议把所 有在未命名的名字空间(默认包)中的类放到某个命名空间中。
无奈,只好顺从吧。
2012-06-10