星空网 > 软件开发 > Java

【Simple 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类型。

//illegalnew B().me().doB();

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

//legalnew 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类型;

 

译文链接:http://www.programcreek.com/2011/12/an-example-of-java-static-type-checking/




原标题:【Simple Java】Java中静态类型检查是如何进行的

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

跨境物流网站:https://www.goluckyvip.com/tag/94194.html
跨境电商物流网站:https://www.goluckyvip.com/tag/94195.html
跨境货运网站:https://www.goluckyvip.com/tag/94196.html
跨境物流新闻:https://www.goluckyvip.com/tag/94197.html
跨境物流行业:https://www.goluckyvip.com/tag/94198.html
跨境电商物流app:https://www.goluckyvip.com/tag/94199.html
长治婚庆女司仪和主持人:https://www.vstour.cn/a/366176.html
北京丰台区水上乐园哪家好玩?:https://www.vstour.cn/a/366177.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流