首页 > 解决方案 > Eclipse 等效于 Intellij 动态属性

问题描述

在我们的开发团队中,我们有 Eclipse 和 Intellij IDEA 用户,我的团队主要使用 Groovy。

我们这个特定团队的初级开发人员,在开发一个可以完全访问我们需要的所有相关类的 IDE 时,仍然将脚本复制粘贴到我们的 web-ui 中,它会根据特定的规则和设置在内部运行它们。

由于脚本运行程序 afaik 将某些变量注入到环境中,因此它们可在脚本中使用,但 IDE 无法自动完成。在 Intellij 中,我们将它们声明为 IDE 级别上每个脚本的动态属性,以便 IntelliSense 将它们视为它们所在类型的对象,但我无法在 Eclipse 中找到等效的功能,也没有太多关于任何人的信息类似的情况。

例如,在以下脚本中:

def location = locationService.findLocationById(123)

WherelocationService是实现ILocationService. 在服务器上运行时,location正确识别为 type Location,但 IDE 无法推断它,当然。在 Intellij 中,我可以添加一个动态属性locationService,将其标识为“ILocationService”类型。

这在 Ecipe 上是否可行?

谢谢!

标签: eclipsegroovydynamic-properties

解决方案


如果您想向编辑器添加类型推断建议,以便它可以为变量表达式提供内容帮助,Eclipse 中有几种可能性:

  1. 将插入符号(光标)放在脚本中的“位置”上,按 Ctrl+1 打开 Quick Assist 菜单并选择Add inferencingSuggestion。在对话框中,将 Type 设置为变量的完全限定类型。除非您在工作区中启用了 DSLD 支持,否则可能不会提供此帮助(必须取消选中工作区中的 Window > Preferences > Groovy > DSLD > Disable DSLD Support )。

  2. 为提供该类型的脚本创建一个 DSLD。这有点复杂,但在处理委托类型等方面更加灵活。请参阅https://github.com/groovy/groovy-eclipse/wiki/DSL-Descriptors(IntelliJ具有非常相似的 GDSL)。

  3. 强制转换或强制脚本中的变量。可能有点笨拙,但肯定是最容易实施的。

  4. 我认为您可以提供一个 BaseScript 注释,它可以为脚本绑定中的内容提供一些额外的提示。


推荐阅读