博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 静态检查_如何在Java中进行静态类型检查
阅读量:5732 次
发布时间:2019-06-18

本文共 857 字,大约阅读时间需要 2 分钟。

Java在开发中会使用静态类型进行核查,这样可以确保类型的错误出现,而我们的初衷是不让类型错误在运行的时候发生,以下就是爱站技术频道小编介绍的如何在Java中进行静态类型检查,一起来了解一下吧!

代码示例

假定我们有如下类,A和B,B继承A。

class A {

A me() {

return this;

}

public void doA() {

System.out.println("Do A");

}

}

class B extends A {

public void doB() {

System.out.println("Do B");

}

}

首先,调用new B().me()将返回什么呢?A对象还是B?

me()方法被声明将返回A对象,所以在编译期间,编译器只知道它返回A对象。然而,它在运行期间却返回了B对象,因为B继承了A的方法返回了自己。

静态类型检查是如何工作的?

如下代码行是非法的,即使方法doB()是被B对象调用的。问题在于它的引用类型是A,在编译器件,编译器不知道它的真实类型,所以将它当做A类型。

//illegal

new B().me().doB();

所以,只有下面的代码是可以被调用的:

//legal

new B().me().doA();

然而,我们可以将其强制类型转换成B,如下代码:

//legal

((B) new B().me()).doB();

接下来,我们添加一个C类:

class C extends A{

public void doBad() {

System.out.println("Do C");

}

}

那么,下面的代码语句将通过静态类型检查:

//legal

((C) new B().me()).beBad();

编译器不知道它的真实类型,但是在运行期间将会抛出异常,因为B类型不能转换成C类型;

上述是爱站技术频道小编介绍的如何在Java中进行静态类型检查,我们不妨来js.aizhan.com搜索,相信这里为你提供了最全面的知识。

转载地址:http://sxowx.baihongyu.com/

你可能感兴趣的文章
Aho-Corasick automation-KMP
查看>>
【http】post和get请求的区别
查看>>
/etc/profile
查看>>
摘记总结(1)
查看>>
TFS强制撤销某个工作区的文件签出记录
查看>>
编写who命令
查看>>
2.1 sikuli 中编程运行
查看>>
愚公移山第一章伪代码
查看>>
常见的位运算技巧总结(膜wys)
查看>>
python魔法函数(二)之__getitem__、__len__、__iter__
查看>>
EL表达式无法显示Model中的数据
查看>>
Linux应用小技巧
查看>>
考题纠错2
查看>>
ps6-工具的基础使用
查看>>
关于CefSharp.WinForms的学习
查看>>
灵活运用 SQL SERVER FOR XML PATH
查看>>
es 加磁盘扩容
查看>>
linux 参数内核
查看>>
使用Azcopy在Azure上进行HBase的冷热备份还原
查看>>
计组_定点数一位乘_布斯公式
查看>>