当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:17:00  来源:本站整理

java下溯造型与运行期典范标识[Java编程]

赞助商链接



  本文“java下溯造型与运行期典范标识[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

由于我们在上溯造型(在担当构造中向上移动)期间丧失了具体的范例信息,所认为了获得具体的范例信息——亦即在分级构造中向下移动——我们必须利用 “下溯造型”技术.但是,我们知道一个上溯造型必定是安全的;底子类不大概再拥有一个比衍生类更大的接口.因此,我们通过底子类接口发送的每一条消息都必定可以接纳到.但在举行下溯造型的时刻,我们(举个例子来说)并不真的知道一个多少形状实际是一个圆,它完好大概是一个三角形、方形大概其他形状.

为办理这个问题,必须有一种办法可以保证下溯造型精确举行.只有这样,我们才不会冒然造型成一种错误的范例,然后发出一条对象不大概收到的消息.这样做是非常不安全的.
在某些语言中(如C++),为了举行保证“范例安全”的下溯造型,必须采纳特别的操作.但在Java中,全部造型城市自动得到查抄和核实!所以即便我们只是举行一次普通的括弧造型,进入运行期今后,仍旧会毫无包涵地对这个造型举行查抄,保证它的确是我们但愿的那种范例.假如不是,就会得到一个ClassCastException(类造型违例).在运行期间对范例举行查抄的行为叫作“运行期范例标识”(RTTI).下面这个例子向大家演示了RTTI的行为:

//: RTTI.java
// Downcasting & Run-Time Type
// Identification (RTTI)
import java.util.*;

class Useful {
  public void f() {}
  public void g() {}
}

class MoreUseful extends Useful {
  public void f() {}
  public void g() {}
  public void u() {}
  public void v() {}
  public void w() {}
}

public class RTTI {
  public static void main(String[] args) {
    Useful[] x = {
      new Useful(),
      new MoreUseful()
    };
    x[0].f();
    x[1].g();
    // Compile-time: method not found in Useful:
    //! x[1].u();
    ((MoreUseful)x[1]).u(); // Downcast/RTTI
    ((MoreUseful)x[0]).u(); // Exception thrown
  }
} ///:~
和在表示图中一样,MoreUseful(更有效的)对Useful(有效的)的接口举行了扩大.但由于它是担当来的,所以也能上溯造型到一个Useful.我们可看到这会在对数组x(位于main()中)举行初始化的时刻发生.由于数组中的两个对象都属于Useful类,所以可将f()和g()办法同时发给它们两个.并且假定试图调用u()(它只存在于MoreUseful),就会收到一条编译期出错提醒.
若想拜候一个MoreUseful对象的扩大接口,可试着举行下溯造型.假如它是精确的范例,这一行动就会成功.不然,就会得到一个ClassCastException.我们没必要为这个违例编写任何特别的代码,因为它指出的是一个大概在程序中任何地方发生的一个编程错误.
RTTI的意义远不但仅反映在造型处理上.比方,在试图下溯造型之前,可通过一种办法理解自己处理的是什么范例.整个第11章都在报告Java运行期范例标识的各个方面.
  以上是“java下溯造型与运行期典范标识[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .