为什么"安全删除..." IntelliJ属性中无法访问函数?

时间:2017-03-27 07:17:25

标签: java intellij-idea ide refactoring

当我在IntelliJ IDEA中打开Structure窗口时,任何属性都无法访问保存删除... 选项:

enter image description here

但是,同样的功能可以从字段

中使用

enter image description here

从字段中使用时,无论如何 删除整个"属性",即字段及其getter和setter方法。

为什么我不能在整个属性上访问相同的功能?菜单中的函数是,它是灰色的,所以在什么条件下 可以访问?

我创建了一个问题https://youtrack.jetbrains.com/issue/IDEA-170415,所以我在徘徊JetBrains的答案。

1 个答案:

答案 0 :(得分:2)

" context"中提供了重构等操作。在克拉所在的代码结构中的位置。

因此,如果单击字段的代码,您将看到某些重构。或者,如果您将克拉放在班级名称上,您将看到其他重构。

至于如何与项目结构(alt-7)相关 - 你会注意到如果你点击项目结构中的一个项目,然后点击f4(跳转到源),它将导航到确切的位置与该项目相关的源代码窗口。

我经常使用f4从项目结构导航到代码,您会注意到可用的重构是相同的(在结构视图和代码窗格之间)。

现在,有趣的是(我之前从未尝试过这种方法),如果你启用"属性" (在项目结构中使用P)并将光标定位在属性上,点击f4 - 它导航到代码。

我怀疑"属性"之间没有联系。和" PSI" java代码的结构(后者又映射到代码窗格中的特定行)。也许这是intellij的疏忽,或者也许意味着这样,因为该属性确实可以代表3个不同的代码片段(字段,getter和setter)。

对我来说,将属性与字段本身相关联似乎是最合乎逻辑的,因此Jump to Source会导航到该字段(因此重构将可用),但事实并非如此。