我尝试使用 Eclipse 模板(在 Juno 中)为常规导入和静态导入生成语句,但遇到了一些奇怪的情况。
咨询docs后我的第一次尝试是这样的
${:import(org.junit.Test)} //ok
${:importStatic('org.junit.Assert.*')} //gives error
:import
工作正常,但 :importStatic
给出此错误
Template variable '' has incompatible types
但是上面的语法正是 docs 中的呈现方式。 ,其中 :importStatic
与左侧列中的 :import
相同。
我注意到右栏中的示例,它在 :importStatic
前面使用了命名空间 is
${is:importStatic(...
所以我添加了该命名空间,错误消失了,模板开始工作
但是,我对这个神奇的、无法解释的 is
命名空间有点困惑 - 我在 docs 中找不到任何解释。它来自哪里。事实上,稍微玩了一下,似乎 is
根本没有什么特别之处 - 事实证明 :importStatic
前面的任何命名空间都可以工作。
${donkey:importStatic(... //works fine...
那么,有谁知道为什么命名空间对于 :importStatic
是必需的,但不是 :import
?
这个错误以及没有命名空间就无法保存的事实是否只是模板编辑器中的一个错误,还是我遗漏了一些东西?
最佳答案
这不是命名空间,它是模板中使用的变量的 ID - 除了 import
和 importStatic
不需要变量。
我相信你看到的是Eclipse bug 336989在 two 语句中省略 id 会导致此问题。正如您所发现的,解决方法是指定一个 id,即使它不是必需的。
关于java - 为什么 importStatic Eclipse 模板变量需要命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20859108/