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

本文探讨了Java中类重名的情况及其解决方式。当自定义类与标准库类同名时,通过不同的导入策略(如明确导入或按需导入),可以控制使用哪一个类。文章通过示例展示了不同情况下的优先级及编译结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值