当前位置: 首页 > news >正文

网站建设课各地农业信息网站的建设

网站建设课,各地农业信息网站的建设,长春网站建设团队,媒体网站开发eclipse扩展点编码Eclipse扩展点评估有点冗长#xff0c;而且很少能自我解释。 当我最近忙于自己忙于这个话题时#xff0c;我写了一个小助手#xff0c;目的是减少通用编程步骤的样板代码#xff0c;同时增加开发指导和可读性。 它原来是不容易找到一个表现的解决方案而且很少能自我解释。 当我最近忙于自己忙于这个话题时我写了一个小助手目的是减少通用编程步骤的样板代码同时增加开发指导和可读性。 它原来是不容易找到一个表现的解决方案其中所有的使用情况下我可以从目前的项目中提取匹配。 因此我认为分享我的发现并看看其他人对此有何想法是一个好主意。 Eclipse扩展点评估 考虑一个简单的扩展点定义该定义支持扩展的无限贡献。 这些贡献中的每一个都应该提供Runnable实现来执行某种操作 通常的评估任务是检索所有贡献创建可执行扩展并调用以下每个扩展 public class ContributionEvaluation {private static final String EP_ID com.codeaffine.post.contribution;public void evaluate() {IExtensionRegistry registry Platform.getExtensionRegistry();IConfigurationElement[] elements registry.getConfigurationElementsFor( EP_ID );CollectionRunnable contributions new ArrayListRunnable();for( IConfigurationElement element : elements ) {Object extension;try {extension element.createExecutableExtension( class );} catch( CoreException e ) {throw new RuntimeException( e );}contributions.add( ( Runnable )extension );}for( Runnable runnable : contributions ) {runnable.run();}} } 尽管可以将evaluate分为较小的方法来阐明其职责但该类也将填充更多的粘合代码。 当我发现这些部分很难阅读且难以编写时我正在思考一种流畅的界面方法该方法应指导开发人员完成各个实现步骤。 结合Java 8 lambda表达式我能够创建一个辅助工具将evaluate功能归结为 public void evaluate() {new RegistryAdapter().createExecutableExtensions( EP_ID, Runnable.class ).withConfiguration( ( runnable, extension ) - runnable.run() ).process(); } 诚然我作弊了一点因为通过使用java 8 Collection#forEach功能而不是显式循环可以对第一个示例进行一些改进。 但是我认为这仍然不能使代码真正出色 有关如何使用扩展点机制扩展Eclipse的一般信息您可以参考在线文档的《 插件开发环境指南 》。 RegistryAdapter 助手实现的主要类是RegistryAdapter 它封装了系统的IExtensionRegistry实例并提供了一组方法来定义针对特定扩展点应执行的操作 。 目前适配器允许读取贡献配置或创建可执行扩展。 如上所示使用多个表示的方法对多个贡献进行评估–为了精确地评估一个贡献元素以单数表示的方法是合适的。 这意味着对特定运行的贡献你会用操作createExecutableExtension而不是createExecutableExtension s 。 根据选择的操作可以使用不同的配置选项。 由于流畅的API实施了一种语法以提高指导和编程安全性因此这成为可能。 例如 readExtension操作不允许注册ExecutableExtensionConfigurator 因为这将是一个无效的组合。 withConfiguration方法允许在每个可执行扩展名创建后对其进行配置或初始化。 但是如上面的示例所示它也可以用于直接调用可运行扩展。 由于createExecutableExtension(s)的类型安全实现因此可以在lambda表达式中访问扩展实例而无需强制转换。 最后方法process()执行指定的操作并在需要进一步处理的情况下返回创建的元素的类型化Collection CollectionExtension extensions new RegistryAdapter().readExtensions( EP_ID ).process();谓词 但是如何通过适配器选择单个蚀扩展点贡献元素呢 假设我们在上面的贡献定义中添加了一个属性ID 。 RegistryAdapter的流利API允许指定可用于选择特定贡献的Predicate public void evaluate() {new RegistryAdapter().createExecutableExtension( EP_ID, Runnable.class ).withConfiguration( ( runnable, extension ) - runnable.run() ).thatMatches( attribute( id, myContribution ) ).process(); } 有一个实用程序类Predicates 它提供一组预定义的实现以简化诸如属性选择之类的常见用例。 上面的代码是使用静态导入实现的快捷方式 .thatMatches( Predicates.attribute( id, myContribution ) ) 其中“ myContribution”代表在扩展贡献中声明的唯一ID值 extension pointcom.codeaffine.post.contributioncontribution idmyContribution classcom.codeaffine.post.MyContribution/contribution /extension 当然在预设不足的情况下可以实现自定义谓词 public void evaluate() {CollectionExtension extensions new RegistryAdapter().readExtensions( EP_ID, Description.class ).thatMatches( (extension) - extension.getValue() ! null ).process(); }延期 通常Eclipse扩展点评估大部分时间在IConfigurationElement 。 适配器API在区分扩展点和配置元素方面不够清晰并提供了一个称为Extension的简单封装。 但是对于更复杂的任务 Extension实例使基础配置元素可访问。 通常 Extension为属性值贡献名称贡献值嵌套贡献提供访问器并允许创建可执行扩展。 引入此抽象的主要原因之一是拥有一个API该API将检查后的CoreException隐式转换为运行时异常因为我习惯于使用Fail Fast方法而无需进行大量检查后的异常处理。 异常处理 但是如果在插件启动时调用Eclipse扩展评估或在后台执行Eclipse扩展评估则不能选择“快速失败”。 而且在特定的贡献引起问题之后忽略剩余的贡献肯定是不合理的。 因此适配器API允许使用显式异常处理来替换快速失败机制 public void evaluate() {CollectionRunnable contributions new RegistryAdapter().createExecutableExtensions( EP_ID, Runnable.class ).withExceptionHandler( (cause) - handle( cause ) ).process();[...] }private void handle( CoreException cause ) {// do what you gotta do } 注意返回的贡献集合当然只包含那些没有遇到任何麻烦的元素。 在哪里得到的 对于那些想要签出的人这里有一个P2存储库其中包含com.codeaffine.eclipse.core.runtime功能提供RegistryAdapter及其随附的类。 该存储库位于 http://fappel.github.io/xiliary/ 源代码和问题跟踪器托管在 https://github.com/fappel/xiliary 尽管目前完全没有文档但是应该很容易开始使用本文给出的解释。 但是请记住这个小工具还处于早期状态可能会发生一些API更改。 特别是在循环贡献时仅处理CoreException仍然有点太弱。 结论 以上各节介绍了RegistyAdapter的基本功能并重点介绍了它如何简化Eclipse扩展点评估。 我用适配器替换了当前项目中的旧实现并且没有遇到任何麻烦这意味着到目前为止该解决方案对我来说很有希望…… 但是除了眼神之外还有更多。 有了这个小帮手再加上其他自定义断言类型为扩展点的评估功能编写集成测试确实很容易。 但是该主题超出了本文的范围下一次将涉及该主题。 因此请保持关注不要忘记分享知识以防您发现上述方法有用–谢谢 翻译自: https://www.javacodegeeks.com/2014/10/eclipse-extension-point-evaluation-made-easy.htmleclipse扩展点
http://www.pierceye.com/news/746672/

相关文章:

  • 可以自己做网站卖东西wordpress标签静态
  • 典当行 网站威海网站推广
  • 佛山市住房建设局网站网站开发业务ppt
  • 页面结构和页面设计优化措施二十条
  • 做网站程序怎么写wordpress漂浮表单
  • 企业网站要怎么建设网站建设 工具
  • wordpress 邮箱激活宁波营销型网站建设优化建站
  • 婚纱网站页面设计广州网站建设推广公司有哪些
  • 网站制作报价大约建设模式有哪些
  • 公司邮箱怎么注册流程如何优化关键词提升相关度
  • 网站建议方案app代运营
  • 北京建机官网查询台州seo全网营销
  • 网站建设书店用户分几类网站建设项目采购公告
  • 如何做企业网站宣传wordpress站内搜索次数
  • 加盟招商推广网站如何做品牌运营与推广
  • 网站做分布式部署湖南平台网站建设设计
  • 沈阳市建设工程项目管理中心网站网络项目网
  • 沈阳网站建设成创输入网址跳到别的网站
  • 课程网站开发建设商务网站的费用
  • 资讯网站优化排名wordpress 删除所有文章
  • 旅游海外推广网站建设方案wordpress外观无法编辑
  • 品牌手表网站网站推广律师关键词有哪些
  • 卖视频会员个人网站怎么做推广网站的图片怎么做
  • 服务器关闭 网站被k微信公众号推广的好处
  • 工业设计招聘信息网站做网站首页轮播图代码
  • 央企网站开发手机网站 input
  • 千里马招标网站东莞网站推广行者seo08
  • 网络工程专业主要学什么百度seo课程
  • 网站定制开发收费标准是多少网站导航功能
  • 东莞网站(建设信科网络)公众号小程序开发公司