关于导入不同包中同名类的问题

cqulyk 2014-07-27 10:52:07
import java.sql.Date;
import java.util.Date;

public class Test
{
public static void main(String[] args)
{
}
}


以上代码编译会有这个样的错误:
D:\Code>javac Test.java
Test.java:2: 错误: Date的 single-type-import 已定义具有相同简名的类型
import java.util.Date;
^
1 个错误

请问大家该如何解决?只能改成如下形式?
import java.sql.*;
import java.util.*;

public class Test
{
public static void main(String[] args)
{
}
}


...全文
2924 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
日知己所无 2014-07-27
  • 打赏
  • 举报
回复
public class Test {

    public static void main(String[] args) {
        java.sql.Date javaSqlDate = new java.sql.Date(0);
        java.util.Date javaUtilDate = new java.util.Date();
    }
}
这么写行吗?
姜小白- 2014-07-27
  • 打赏
  • 举报
回复
JVM中每个class类都是带着包名的 import java.sql.Date; import java.util.Date; 同时导入两个Date,JVM无法判断你下面的new Date的Date 到底是哪个Date,就出错了 可以导入一个import java.sql.Date; 另一个直接使用 new java.util.Date 来予以区分 或者 两个Date 直接都使用 java.util.Date 和 java.sql.Date 全路径形式
cqulyk 2014-07-27
  • 打赏
  • 举报
回复
引用 1 楼 rumlee 的回复:
这没有办法,否则编译器也不知道你要用哪一个啊。 当要申明引用或者实例化的时候,必须写全路径。 如: java.util.Date d = new java.util.Date();
我懂你的意思,但是我上面贴出的代码主方法内没有任何代码,我导入包的时候明确的指明了哪个类来自于哪个包的呀!
rumlee 2014-07-27
  • 打赏
  • 举报
回复
这没有办法,否则编译器也不知道你要用哪一个啊。 当要申明引用或者实例化的时候,必须写全路径。 如: java.util.Date d = new java.util.Date();
疏可跑马 2014-07-27
  • 打赏
  • 举报
回复
全路径,不然有歧义,编译器不能明确是哪一个类而报错。
rumlee 2014-07-27
  • 打赏
  • 举报
回复
引用 2 楼 cqulyk 的回复:
[quote=引用 1 楼 rumlee 的回复:] 这没有办法,否则编译器也不知道你要用哪一个啊。 当要申明引用或者实例化的时候,必须写全路径。 如: java.util.Date d = new java.util.Date();
我懂你的意思,但是我上面贴出的代码主方法内没有任何代码,我导入包的时候明确的指明了哪个类来自于哪个包的呀![/quote] 你有没有细想过import作用是什么? import java.uti.Date 的作用是告诉编译器,碰到Date类的时候表示用的是java.util.Date类, import java.sql.Date 的作用是告诉编译器,碰到Date类的时候表示用的是java.sql.Date类, 你不觉得这两行存在矛盾吗?

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧