最近同事调的一个服务报错,查看后是日期之间转换出的问题。代码里是把 java.sql.Date 类型的对象 强制转换为

java.sql.Timestamp 类型的对象。报java.lang.ClassCastException。

代码:

java.sql.Date date = new

java.sql.Date(2011,9,15);

Timestamp ts =

(Timestamp)date;

这样的代码根据就编译不过。因为查看Java的Api,会发现 java.sql.Timestamp 继承

java.util.Date,同样 java.sql.Date 也继承 java.util.Date

。两个没有继承关系的类对象是不能进行转换的。

解决办法:

java.sql.Date date = new java.sql.Date(2011,9,15);

Timestamp ts = new

Timestamp(date.getTime());

借此也想深入研究一下Java的父类与子类之间转换的问题。

例子:

父类:

public class ParentClass {

private String privateStr = "privateStr var";

public String  publicStr = "publicStr var";

public String sayHello(){

return "hello , this is a parentclass's function";

}

}

子类:

public class ChildClass extends ParentClass {

private String inStr = "hello icepeter";

public String  outStr = "hello everyone";

public String goHome(){

return "go home!";

}

}

测试类:

public class Test {

public static void main(String[] args) {

//测试一:子类转父类

ParentClass pc1 = new ChildClass();  //上溯造型

System.out.println(pc1.publicStr);

//System.out.println(pc1.privateStr); 访问父类里的私有变量出错

System.out.println(pc1.sayHello());

//System.out.println(pc1.goHome());  访问子类里的公有方法出错

//System.out.println(pc1.outStr);  访问子类的变量出错

//测试二:父类转子类

//第1种情况  会抛出java.lang.ClassCastException:

ParentClass pc2 = new ParentClass();

ChildClass cc2  = (ChildClass) pc2;

//这里必须强制类型转换 //下溯造型

System.out.println(cc2.publicStr);

System.out.println(cc2.outStr);

System.out.println(cc2.sayHello());

System.out.println(cc2.goHome());

//第2种情况

ChildClass  ccS = new ChildClass();

ParentClass pc3 = ccS;

ChildClass cc3  = (ChildClass) pc3;

//这里必须强制类型转换

//下溯造型

System.out.println(cc3.publicStr);

System.out.println(cc3.outStr);

System.out.println(cc3.sayHello());

System.out.println(cc3.goHome());

}

}

总结:

果一个对象与另一个对象没有任何的继承关系,那么他们就不能进行类型转换。如果要把一个派生类对象赋值给基类对象这个称为上溯造型。如果要把基类对象赋值

给派生类对象就需要强制类型转换,这称为下溯造型,下溯造型有一些危险,要安全的进行下溯造型有一个前题,基类对象必须是从派生类对象中上溯过来的。

java父类转换成子类_【转】java 父类与子类的转换相关推荐

  1. java怎么把毫秒转换成天数_关于java:如何将毫秒转换为“ hh:mm:ss”格式?

    我糊涂了. 绊倒这个线程后,我试图找出如何格式化具有hh:mm:ss格式的倒数计时器. 这是我的尝试- //hh:mm:ss String.format("%02d:%02d:%02d&qu ...

  2. java字符串拆分成数组_用Java实现JVM第八章《数组和字符串》

    小傅哥 | https://bugstack.cn 沉淀.分享.成长,专注于原创专题案例,以最易学习编程的方式分享知识,让自己和他人都能有所收获.目前已完成的专题有:Netty4.x实战专题案例.用J ...

  3. 转换成字符串_汇编语言--将字符串中小写字母转换成大写字母

    将字符串中小写字母转换成大写字母 思路: 将键盘上输入的字符读入 调用DOS 10号功能 利用偏移量的性质(类似指针的移动),逐一将字符转换为大写 在转换完的字符串后面 加上 结束符 '$' 利用DO ...

  4. java 输出流转换成输入流_在JAVA中如何将输出流转为输入流的类的实现

    问题背景 在实际应用中,我们会碰的一个功能的输出的字节流,是另一个功能输入字节流的情况.一般情况下,我们可以使用ByteArrayOutputStream和ByteArrayInputStream实现 ...

  5. OFD文件转换成PDF格式,Java语言实现

    OFD文件转换成PDF格式,Java语言实现 我个人的思路大致是这样的.首先在指定路径创建一个文件夹,然后每次要转换的时候都把OFD文件统一放到指定的文件夹内进行转换.这样写代码的时候只需要循环遍历一 ...

  6. java 运行jar包命令_用java –jar 命令运行Jar包

    摘要 这个技巧阐明了如何不直接处理清单文件而将一个不能运行jar包转换成一个可以执行的jar包.学会如何写一段转换jar包的程序,将你的jar包转换成你能使用java -jar 命令运行jar包或象在 ...

  7. java编写输出20个数_【Java每日编程小练习 2021-01-20】

    1 题目重述 题目描述: 字符串压缩 解释: 将原字符串中连续出现的字符,按照出现次数进行压缩处理. 例如: 输入:AACBBBDDDDDFFX 输出:A2C1B3D5F2X1 输入:AACCCDKK ...

  8. java -jar 运行jar包_用java –jar 命令运行Jar包

    用java –jar 命令运行Jar包 摘要 这个技巧阐明了如何不直接处理清单文件而将一个不能运行jar包转换成一个可以执行的jar包.学会如何写一段转换jar包的程序,将你的jar包转换成你能使用j ...

  9. 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目

    王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...

  10. 如何把幻灯片ppt转换成视频_百度经验

    如何把幻灯片ppt转换成视频_百度经验 Powerpoint 2010直接转PPT为视频文件_天极网

最新文章

  1. 如何使用div优雅的布局
  2. 聋人工学院计算机老师,聋人工学院12位手语老师用双手传递声音
  3. Java实现二叉树的前中后序遍历(Leetcode)
  4. 如何在C#中实现图片缩放
  5. 人工智能凉凉了?中国 AI 人才缺口高达 12113 个!
  6. matlab plot symbol,导入时出错matlab.引擎不导入ubuntu16.04上python3.5.2中的matplotlib。为什么?...
  7. PN532读写卡器(支持NFC、RFID)
  8. 字符串匹配算法KMP详解
  9. 华为手机HTML调试,华为手机打开usb调试_卓师兄自助教程_卓师兄官网
  10. 基本初等函数求导公式
  11. 手机应用误删怎么恢复
  12. [VMWare]vmx86版本不对
  13. 如何写出高效率的sql语句
  14. Java 学习API(一)
  15. 盒子模型有时候会出现设置背景、边框无法撑大和设置内外间距异常,一般来说此类问题的原因是什么?
  16. 为什么我的公众号没有留言功能呢?
  17. JAVA计算机毕业设计爱馨敬老院网站Mybatis+系统+数据库+调试部署
  18. Flutter中如何利用StreamBuilder和BLoC来控制Widget状态
  19. 怎么彻底清除C语言软件,【AUTO Uninstaller - 使用教程】Autodesk系列软件终极完美修复卸载工具【转载】...
  20. 使用 js 实现累乘之和

热门文章

  1. English trip V1 - 22. My Life Teacher:Emily Key: describe talk about past 过去式
  2. Excel获得焦点变色
  3. appium第一个安卓自动化工程
  4. 144.ipv4地址匮乏的解决方法
  5. 84.断点 85.显卡
  6. java 伪异步 netty,Netty(一) - 不死的达芬奇的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. java 工作3年水平_有着4年java工作经验,应该达到什么样的水平?
  8. java contains_Java基础教程|生成不重复随机数 java
  9. SSL/TLS协议详解
  10. 030_Message消息提示