当我在IntelliJ IDEA中打开“结构”窗口时,任何属性均无法访问“保存删除...”选项:
但是,从字段中可以使用相同的功能:
从字段中使用时,无论如何它会删除整个“属性”,即字段及其getter和setter方法。
为什么不能在整个属性上访问完全相同的功能?而且该功能在菜单中并且显示为灰色,那么在什么情况下可以访问它?
我创建了一个问题https://youtrack.jetbrains.com/issue/IDEA-170415,所以我在徘徊JetBrains的答案。
最佳答案
克拉等代码结构在代码上下文中的“上下文”中提供了诸如重构之类的操作。
因此,如果单击字段的代码,您将看到某些重构。或者,如果将克拉放在类别名称上,您将看到其他重构。
至于这与项目结构的关系(alt-7),您会注意到,如果单击项目结构中的某个项目,然后单击f4(跳转到源代码),它将导航到源代码中的确切位置与该项目相关的窗口。
我经常使用f4从项目结构导航到代码,您会注意到可用的重构是相同的(在结构视图和代码窗格之间)。
现在,有趣的是(我之前从未尝试过),如果在项目结构中启用“属性”(带有P)并将光标定位在属性上,请按f4键-它不会导航至代码。
我怀疑Java代码的“属性”和“ PSI”结构之间没有链接(后者又映射到代码窗格中的特定行)。也许这是intellij中的一个疏忽,或者这意味着这种方式,因为该属性确实可以表示3个不同的代码段(字段,getter和setter)。
在我看来,将属性与字段本身相关联似乎是最合逻辑的,这样“跳转到源”就可以导航到该字段(因此可以进行重构),但事实并非如此。