问题描述
这个类的载入项有这两个:import java.sql.*;import java.util.*;然后我在后面有一个取数据库字段的表达式,声明的是一个Date类型的变量,但是编译的时候提示出错“The type Date is ambiguous”。请问一下:sql.date和util.date有什么区别?如果我的类中同时出现变量的类型是Date以及数据库的字段类型是Date,我该怎么办?载入哪一个?还是怎么处理? 问题补充:asyty 写道
解决方案
楼主,错误信息翻译是,“Date类型是暧昧的(模糊的、不清楚的)”,因为java.sql包下和java.util包下都有Date类型,编译器不知道当前到底是哪个包下面的Date,java.sql.Date继承自java.util.Date,一般情况下java.util.Date就够了,同时出现两种Date型变量,只要加上包名定义就行了:java.sql.Date date1 = new java.sql.Date();java.util.Date date2 = new java.util.Date();
解决方案二:
java.sql.Date继承自java.util.Date根据里氏代换原则,子类是可以替换基类的,设计的程序要有扩展性,应该都要引用基类的,所以 引入 java.util.Date 更合理些
解决方案三:
一般尽量使用一个,如果有多个可以这样使用java.sql.Date sqlDatejava.util.Date date就是在前面加上命名空间
解决方案四:
jdk中是这样的说的:java.sql.Date一个包装了毫秒值的瘦包装器 (thin wrapper),它允许 JDBC 将毫秒值标识为 SQL DATE 值。毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT 以来经过的毫秒数。 为了与 SQL DATE 的定义一致,由 java.sql.Date 实例包装的毫秒值必须通过将时间、分钟、秒和毫秒设置为与该实例相关的特定时区中的零来“规范化”。java.util.Date类 Date 表示特定的瞬间,精确到毫秒。 在 JDK 1.1 之前,类 Date 有两个其他的函数。它允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和分析日期字符串。不过,这些函数的 API 不易于实现国际化。从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和分析日期字符串。Date 中的相应方法已废弃。 尽管 Date 类打算反映协调世界时 (UTC),但无法做到如此准确,这取决于 Java 虚拟机的主机环境。当前几乎所有操作系统都假定 1 天 = 24 × 60 × 60 = 86400 秒。但对于 UTC,大约每一两年出现一次额外的一秒,称为“闰秒”。闰秒始终作为当天的最后一秒增加,并且始终在 12 月 31 日或 6 月 30 日增加。例如,1995 年的最后一分钟是 61 秒,因为增加了闰秒。大多数计算机时钟不是特别的准确,因此不能反映闰秒的差别。 一些计算机标准是按照格林威治标准时 (GMT) 定义的,格林威治标准时和世界时 (UT) 是相等的我一般用的是java.util.Date,
解决方案五:
sql.Date继承了 util.Date数据库的字段是date不代表一定要用sql.Date,都可以的,没有必然联系,只要你在java里统一用一种就好了