Eclipse中的API Tools:简介 - 编程入门网
g getId() {
return Math.round(Math.random());
}
}
我们的抽象小部件有一个用 API 限制注释的方法,它告诉客户端不要覆盖此方法。让我们创 建一个可用的默认小部件。 清单 3. DefaultWidget.java package org.eclipse.example.widgetfactory; /** * A default widget, this class isn''t meant to be extended. * * Implementation is provided as-is. * * @noextend */ public class DefaultWidget extends AbstractWidget { public String getName() { return "The default widget"; } } Eclipse中的API Tools:简介(6)时间:2011-11-09 IBM Chris Aniszczyk我们为客户端提供的默认小部件非常简单。它主要用于使用而非扩展。我们可以在自己的插件 内随意扩展该类,或创建其他可用的默认小部件。因此,假设我们是这个小部件 API 的客户,看看会发 生什么。让我们创建两个类:MyWidget(实现 IWidget)和 MyDefaultWidget(扩展 DefaultWidget)。 作为小部件 API 的客户,我会看到什么?对于 MyWidget 类,我们将看到一个警告,说明我们正在实现 不能由客户实现的 API 接口(参见图 5)。对于 MyDefaultWidget 类,将看到关于非法扩展 DefaultWidget 类以及非法覆盖 getId() 方法的警告。 图 5. MyWidget.java 图 6. MyDefaultWidget.java 这个简单的示例让 您清晰地了解到如何向 API 客户呈现关于 API 的使用信息。 Eclipse中的API Tools:简介(7)时间:2011-11-09 IBM Chris Aniszczyk二进制文件不兼容 声明 API 时遇到的问题是:如何知道何时真正将 API 从一个版本拆分到另一个软件版本中。例如,拆分 API 的简 单方法是更改先前定义的 API 方法的方法签名。为了方便演示,我将用常见的 PluginRegistry 类在 Eclipse 代码库中完成该操作。 图 7. 二进制文件不兼容的更改 在本例中,我修改了现有的 API 方法 findEntry(String id),而 API Tools 足够智能,可以意识到 这将拆分这个 API 类的客户。拆分 API 有许多其他方法,并且 API Tools 将提供所有这些方法的检查 。结果是,所有这些二进制文件的不兼容更改都可以在 API Tools 首选项页上配置。 图 8. API Tools 首选项 版本化 处理 API 遇到的另一个问题是版本管理。我认为版本管理有两个方面:一是提出版本化策略,二是强 制执行该策略。API Tools 将遵循 Eclipse 版本化指导信息(请参阅 参考资料),这些指导信息非常依 赖于 OSGi 版本化模式。为简单起见,版本号由四部分组成 — 三个整数和一个字符串,分别是 major.minor.service.qualifier。 每个版本分段将捕捉不同的意图。主要分段表示 API 中的拆分,次要分段表示外部可见的更改(如新 API),服务分段表示错误修正和开发流程更改,而限定符分段表示特殊构建。 由于进行了某些更改(比如添加新 API 方法或修复 bug)而必须更改插件版本号时,应该记住比较困 难且容易出错的部分。过去的常见问题是开发人员常常在发生更改时就提升次要版本,而不是在更改新 API 更改时 — 例如,在开始 Eclipse SDK 的 3.4 流程时,通常只提升次要版本,假定将来进行的更改 会导致修改次要版本。但是,有了 API Tools,版本管理就不再容易出错,因为 API Tools 可以根据 API 基准告诉您正确的插件版本,并强制执行。例如,如果我把一个方法添加某个插件的版本号为 3.3.0 的 API 类中,API Tools 将显示什么呢? Eclipse中的API Tools:简介(8)时间:2011-11-09 IBM Chris Aniszczyk无序的 API Tools 和报表 虽然在无序环境中使用 API Tools 不是本文的讨论范围,但它是可行的。这就是 Eclipse 构建的任 务,它将生成 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |