【问题标题】:IntelliJ to move a class along with conflicted classes to a new package?IntelliJ 将一个类与冲突的类一起移动到一个新包中?
【发布时间】:2014-06-26 23:18:28
【问题描述】:

当我在 Java 类上选择 Refactoring > Move 时,IntelliJ 会发出警告,这将导致其他类发生冲突。有没有办法告诉 IntelliJ 移动一个类以及任何会发生冲突的类?

编辑:似乎我最初的问题不清楚,所以我提供了一个例子。

如果我的 classA 在里面使用 ClassB。如果我将 classA 移动到另一个目录(不同的 maven 模块),ClassA 将无法再访问 classB。理想情况下,IntelliJ 也可以选择自动将 classB 移动到另一个目录中。

【问题讨论】:

  • 您好,只需点击类按 f6 然后选择要移动的包并按重构 intellij 会自动处理引用
  • @M.Sharma 我刚刚用一个例子更新了这个问题。请看一看。
  • 在这种情况下,它可能是一个 intelliJ 错误,因为重构后 intellij 会自动处理导入语句
  • @M.Sharma 导致冲突的不是导入语句。 ClassB 将出现编译错误,因为它无法访问现在位于另一个目录/模块中的 ClassA。
  • 老板只是哪个类给你导入的编译器错误只需将光标保持在那里并按ALT+ENTER并从弹出菜单中添加模块路径的导入语句

标签: java intellij-idea intellij-13


【解决方案1】:

当您尝试移动一个类时(您可以进行重构 > 移动或按 F6 或简单地拖放)Intellij 提供了一些选项,例如:

Search in comments and strings

Search for text occurrences

Search for references 等..

如果您选择所有这些 Intellij 将处理您的依赖项。所以你不必担心它们。

也检查Move Class Dialog

【讨论】:

  • 我在 IDEA 13 中没有看到“搜索参考”选项。Screenshot
  • 是的,你是对的。文档提到此选项仅适用于移动文件或移动包重构。但无论如何,如果你选中这两个复选框,你会没事的。
  • 似乎我最初的问题不清楚,所以我提供了一个例子。请看一看。
【解决方案2】:

检查您尝试移动的所有类的访问修饰符。

也许您使用了 'package-private'(default) 修饰符,然后,当您将这些类移动到另一个包时,其他类将无法访问它们。

【讨论】:

  • 我明白为什么类会导致冲突。问题是如何将这些类移动到新包中。
猜你喜欢
  • 2017-04-29
  • 1970-01-01
  • 2014-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
相关资源
最近更新 更多