java - 为什么在 IntelliJ 的属性中无法访问 "Safe delete..."函数?

标签 java intellij-idea ide refactoring

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

enter image description here

但是,相同的函数可以在字段中使用:

enter image description here

当从字段中使用时,它无论如何都会删除整个“属性”,即字段及其 getter 和 setter 方法。

为什么我无法在整个属性上访问完全相同的功能?并且该功能菜单中并且呈灰色显示,那么在什么条件下可以使用该功能?

我创建了一个问题 https://youtrack.jetbrains.com/issue/IDEA-170415 ,所以我想知道 JetBrains 的答案是什么。

最佳答案

诸如重构之类的操作可以在代码结构中克拉所在位置的“上下文”中使用。

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

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

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

现在,有趣的是(我以前从未尝试过这一点),如果您在项目结构中启用“属性”(带有 P)并将光标定位在属性上,请按 f4 - 它不会 导航至代码。

我怀疑java代码的“属性”和“PSI”结构之间没有链接(这又映射到代码 Pane 中的特定行)。也许这是 intellij 的一个疏忽,或者也许它就是这样的,因为属性确实可以代表 3 个不同的代码段(字段、getter 和 setter)。

对我来说,将属性与字段本身关联起来似乎是最合乎逻辑的,这样“跳转到源”就会导航到该字段(因此可以进行重构),但事实并非如此。

关于java - 为什么在 IntelliJ 的属性中无法访问 "Safe delete..."函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43040104/

相关文章:

javascript - 如何在 webstorm 中对齐 javascript 的等号

delphi - 欢迎页 加入收藏

wpf - 在 Visual Studio Express 中创建 WPF 库

java - 如何在 Multi-Tenancy 架构中维护 session 属性?

java - 从 java 调用时 shell 脚本中的 Scrapy 命令不执行

java - 在Intellij idea Community Edition版本2016.1.1中我可以使用数据库吗?

android-studio - 如何将按键序列映射到 IdeaVim 按键映射

html - 适用于Mac OS的简单,良好的CSS/HTML IDE?

java - 无法通过 id 定位元素

java - Java 中的 Const 返回值