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

Eclipse中的IAdaptable解析[Java编程]

赞助商链接



  本文“Eclipse中的IAdaptable解析[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

Java是一种强范例语言,每个实例都必须有指定的范例.实际上,Java范例有两种声明范例和 运行时范例 (也可以呼应的说是静态范例 和动态范例 ). 像Python这样的弱范例语言普通称为无范例,但是这样说并不严谨,因为每个实例都有它的运行时范例.你只是不用事前声明一个实例的范例罢了.

要想调用一个对象中的办法,这个办法需求在声明范例中存在.也就是说,你只能调用定义在父类中的办法,即便该实例是一个肯定的子范例:

List list = new ArrayList();
list.add("data"); // 在这里没问题
list.ensureCapacity(4); // 这里就不行了ensureCapacity() 只在ArrayList中才有.

假如我们要调用实际范例中的办法,我们首先要将它转为精确的范例.在本例中,我们可以把 ArrayList 转为List,因为ArrayList实现了List 接口. 也可以在运行时动态的查验,利用 list instanceof ArrayList.

可扩大的接口

糟糕的是,一个类不能老是实现你所需求实现的接口.大概是因为这只对少数几种情形才有效,大概它是一个没有被关联的库中的范例,大概这个接口在后期又被改变了.

这种情形便可以利用IAdaptable. 你可以把 IAdaptable 动态的举行范例转化.利用以下办法避免直接的范例转化:

Object o = new ArrayList();
List list = (List)o;

我们可以这样做:

IAdaptable adaptable = new ArrayList();
List list = (List)adaptable.getAdapter(java.util.List.class);

你可认为它是一种范例动态转化; 我们把adaptable转为List实例.

为什么不直接转化,而要用额外的getAdapter() 呢?这种机制可以使我们将目标类转化为没有实现的接口.比方, 我们大概想利用HashMap 作为一个 List, 固然他们并不兼容.

IAdaptable adaptable = new HashMap();
List list = (List)adaptable.getAdapter(java.util.List.class);

实现IAdaptable

大大都IAdaptable的实现看起来就想是为支持范例构造多个if表达式的叠加.假如要为HashMap实现getAdapter() 可以这样:

public class HashMap implements IAdaptable {
  public Object getAdapter(Class clazz) {
   if (clazz == java.util.List.class) {
    List list = new ArrayList(this.size());
    list.addAll(this.values());
    return list;
   }
   return null;
  }
  // ...
}

返回的是一个对自身的代理,而不是直接转化范例.假如恳求的是不支持的范例,可以直接返回null表明失利,这样比抛出非常要好.


  以上是“Eclipse中的IAdaptable解析[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • Win7下Eclipse中文字体太小办理办法
  • 完善调整Ubuntu下的Eclipse字体及界面显示
  • Ubuntu 下MyEclipse和NetBeans问题
  • Ubuntu 10.04 Eclipse C/C++平台搭建
  • Ubuntu10.10配置JRE、JDK、Eclipse
  • 在Ubuntu下打造Avr-Eclipse开辟环境
  • Ubuntu(Linux)+XAMPP(LAMPP)+eclipse+PHP+XDebug 完好的开辟环
  • Eclipse+JBoss+MySQL开辟环境设置
  • Java IDE实用对比:Eclipse、NetBeans、IntelliJ
  • Eclipse插件开辟快速入门
  • Eclipse插件开辟中实现改革和重编译
  • Eclipse中自动重构实现摸索
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

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

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