日期:2014-05-20  浏览次数:20809 次

package&import
小弟新手有一些问题不解,想向大家学习一下。
先说一下我的理解
1.package应该是一个类固有属性的一部分(表示该类存在于哪个地址)
2.import应该是表示该类引用了哪个类(包括地址)
3.classpath表示的在运行程序之前寻找的被引用类的地址
如果这样的话那么在每个classpath目录下的package应该是单独且唯一的。如果两个

classpath目录下有相同的package,import该怎么引用呢?
例如:
set classpath=D:\myclass1;D:\myclass2;
//D:\java\test1.java
import a.b.*;
public class test1
{
 static public void main(String[] args)
 {
  test t = new test();
 }
}

//D:\myclass1\a\b\test.java
package a.b;
public class test
{
 public static void main(String[] args)
 {
  System.out.println("myclass1");
 }
}

//D:\myclass2\a\b\test.java
package a.b;
public class test
{
 public static void main(String[] args)
 {
  System.out.println("myclass2");
 }
}
===========================================================
上面的test1在引用test时引用的是哪个test呢?
我上面的三个小程序运行出错是为什么呢?~~

------解决方案--------------------
package 用来区分同名类
import你说的是对的
classpath 这个说实话我没用过
------解决方案--------------------
如果两个classpath目录下有相同的package, 使用前面的PACKAGE:D:\myclass1\a\b\test
所以你的程序应该输出:myclass1
------解决方案--------------------
引用楼主 uestctsg 的帖子:
……
3.classpath表示的在运行程序之前寻找的被引用类的地址
如果这样的话那么在每个classpath目录下的package应该是单独且唯一的。如果两个
classpath目录下有相同的package,import该怎么引用呢?

------解决方案--------------------
探讨
引用楼主 uestctsg 的帖子:
……
3.classpath表示的在运行程序之前寻找的被引用类的地址
如果这样的话那么在每个classpath目录下的package应该是单独且唯一的。如果两个
classpath目录下有相同的package,import该怎么引用呢?



这应该不属于java规范内的东西,
视乎虚拟机的具体实现吧。

JDK 1.4 的时候,
只要找到一个就认为成功,
不会检查冲突。
以后的版本就不知道了。