我先是自己封装了一个包package study;<程序省略>
然后再另一个程序中调用此包import study.*;编译无法通过,提示无法访问Arrays2.
Arrays2是封装在study包里的一个public类,未定义其构造方法。但是如果我把调用包语句改成:
import study.Arrays2;
就能够顺利通过编译并运行成功。想询问下造成这种情况是什么原因?
然后再另一个程序中调用此包import study.*;编译无法通过,提示无法访问Arrays2.
Arrays2是封装在study包里的一个public类,未定义其构造方法。但是如果我把调用包语句改成:
import study.Arrays2;
就能够顺利通过编译并运行成功。想询问下造成这种情况是什么原因?
只能这么理解了。
打开study文件夹里,里面只有一个Arrays2.class 文件。会不会和classpath设置有关系?
封包用的语句是:package study;
是的,import java.util.*;没有任何问题,而且可以直接调用里面的类,例如Arrays
import study.Arrays2; 这样明确导入Arrays2类,会自动进行实例化,自然会自动加上构造方法。所有你使用第二种方法可以编译成功。
你的意思是说,若我想用import study.*; 进行导入,必须在study文件夹内含有Arrays2.java文件?
不是的。被导入的Java类只需要class文件,不需要Java文件的。但是你的程序这个问题确实很难理解。我建议你重做一遍:在study目录下面定义Array2.java文件,然后编译,通过后,删掉Array2.java文件,保留Array2.class文件。看看效果如何。