java 静态检查_如何在Java中进行静态类型检查

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搜索,相信这里为你提供了最全面的知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值