`

java导入包重名的话....

阅读更多

今天无意想到一个无聊的问题,java类重名会怎样?我们知道,一般的变量重名会报错,局部变量与全局变量重名局部优先,那么类重名会怎样?其实也不会怎样,都不在一个文件里= =! 。但是导入的时候就会有问题了。网上搜索到了一个帖子刚好解答了我的问题。简单概括如下:     (其实就是ctrl+c--> ctrl+v --> del XoX)来源网址:http://topic.csdn.net/t/20060305/17/4593938.html

 代码:(我先放入两个文件中) 
Vector.java 
class   Vector   { 
public   Vector()   { 
System.out.println( "Class   Vector "); 
     } 


Exercise3.java 
import   java.util.Vector; 
public   class   Exercise3   { 
public   static   void   main(String[]   args)   { 
Vector   v   =   new   Vector(); 
    } 

这个时候应该来说 java.util.Vector 和自己定义的Vector重名了,此时java用的是 java.util.Vector 。因为导入语句是 import   java.util.Vector;  这是明确导入,优先级更高。如果我改成:import java.util.*;则会使用自己定义的Vector,因为 .*  是个“随需导入”,他的优先级最低,所以使用的就是自己的Vector。

如果我放到一个文件里 
Exercise3.java 
import   java.util.*; 
class   Vector   { 
    Vector()   { 
        System.out.println( "Class   Vector "); 
    } 


public   class   Exercise3   { 
    public   static   void   main(String[]   args)   { 
        Vector   v   =   new   Vector(); 
    } 

此时根据“随需导入”,会使用自己定义的Vector。若改为 import  java.util.Vector; 使用了明确的导入,那么他和自己写的 Vector 就是优先级相等了,编译器无法判断该用哪个,就会报错。

COPY完毕

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics