`
只帅一次
  • 浏览: 32174 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java编程思想练习题-第6章练习2-import冲突

阅读更多

题目:(大意)如果import的类库中有两个名字一样的类,我们如果使用了这个名字的类,会发生冲突,描述情形。

解析:这个问题在不同的场景下会有不同的表现。

 

demo:假的ArrayList

package iteye;

public class ArrayList {
	public ArrayList() {
	System.out.println("i'm a fake ArrayList!");
	}
}

 测试类:

package iteye;
import java.util.*;
import iteye.*;

public class test {
	public static void main(String []args)  {  
		ArrayList list =new ArrayList();
	
	}
    }

情况一:同包

如果重名的类中有一个位于同一包中,且另一个是*引用,则不会报错,且会使用同一包中的类。

 

情况二:不同包且都是*引用

如果重名的类都和使用的类在不同包中,如假冒的ArrayList在包iteye.bean中,那么编译不会通过,需要删除一个import或者带上包名使用。

 

情况三:不同包且一个是*引用一个是绝对引用

如这里改为:

import java.util.*;
import iteye.bean.ArrayList;

 会使用绝对引用的类。

 

情况四:不同包且均为绝对引用

冲突的后一个import会报

The import iteye.bean.ArrayList collides with another import statement

 

结论:我们看到有四种可能的情况,如果重名的话可能会有不可预知的后果,我们往往不知道使用了哪一个类,最好不要重名。有可能重名的时候用包名。

 

 

 

 

2
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics