文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java中怎么检查静态类型

2023-05-30 21:01

关注

Java中怎么检查静态类型,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

关于静态类型检查和动态类型检查的解释:

静态类型检查:基于程序的源代码来验证类型安全的过程;

动态类型检查:在程序运行期间验证类型安全的过程;

Java使用静态类型检查在编译期间分析程序,确保没有类型错误。基本的思想是不要让类型错误在运行期间发生。

在各色各样的编程语言中,总共存在着两个类型检查机制:静态类型检查和动态类型检查。

静态类型检查是指通过对应用程序的源码进行分析,在编译期间就保证程序的类型安全。

动态类型检查是在程序的运行过程中,验证程序的类型安全。在Java中,编译期间使用静态类型检查机制分析Java源代码,可以提前发现Java中类型缺少的错误。这个机制的好处是,不让错误的事情在运行时才被发现。本文,将使用几个代码示例,深入讲解Java中的类型检查机制。一旦完全理解了本文的例子,就完全掌握了Java中的静态类型检查。

深入分析Java的静态类型检查

代码示例

假设我们有如下的两个类,类Super 和 类Suber,而且他们具有如下继承关系:

class Super {Super me() {return this;}public void doSuper() {System.out.println("www.tiantianbianma.com");}}class Suber extends Super {public void doSuber() {System.out.println("天天编码");}}

首先,思考这个问题:”new Suber().me()” 的返回值是什么? 是一个 Super对象 还是一个 Suber对象?

这个 me() 方法被声明为返回一个 Super对象,所以,在编译期间,编译期认为它返回的是一个 Super对象。但是,在运行期间,该语句实际返回的是一个 Suber对象,因为 Suber继承了Super的me()方法,并返回了自身对象(多态性)。

静态检查

我们来看看常见的错误示例代码:

// 错误new Suber().me().doSuber();

这个语句在编译时会报错,虽然 “new Suber().me()” 返回的结果,本质上是一个 Suber对象,Suber对象确实也具有 doSuber() 方法。但是,在编译器看来,”new Suber().me()” 返回结果的引用类型是 Super,自然不能在Super类型的引用上调用该类型没有定义的 doSuber() 方法。所以,我们可以改成如下的正确形式:

// 正确new Suber().me().doSuper();

另外,既然 “new Suber().me()” 返回的结果确实是一个 Suber对象,如果想调用其特有的方法,我们可以使用强制类型转换来完成功能:

// 正确((Suber) new Suber().me()).doSuber();

深入扩展

现在,假设我们增加了一个如下所示的类:Brother

class Brother extends Super{public void doBad() {System.out.println("好好学习");}}

那么,大家思考一下如下的语句:

// 正确((Brother) new Suber().me()).beBad();

这个语句真的是正确的吗?实际上,该语句确实可以通过静态类型检查和正确编译。毕竟,编译器不知道 “new Suber().me()” 的实际类型。但是,该语句在运行时出抛出如下的错误:

java.lang.ClassCastException: Suber cannot be cast to Brother

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯