【问题标题】:How can I prevent Eclipse from importing nested classes?如何防止 Eclipse 导入嵌套类?
【发布时间】:2011-04-23 19:48:12
【问题描述】:

每当我使用嵌套类时,我都会给它们命名不包括外部类名,例如, MySomething.Kind 而不是 MySomething.MySomethingKind。嵌套类有时对外部可见,然后我想始终通过封闭类限定的名称来引用它们,即MySomething.Kind 而不仅仅是Kind。有时有多个类包含嵌套的Kind,因此使用非限定名称可能会造成混淆。

有什么方法可以防止 Eclipse 不必要地导入 mypackage.MySomething.Kind,而不是使用(已经导入的)mypackage.MySomething半限定名称?

更新:

这不是自发发生的。正如jprete 所说,当我总是使用半限定名称时,嵌套类不会被导入。但是任何创建MySomething.Kind 类型变量的重构都只将其声明为Kind,并添加了不需要的导入语句。这会使重构变得无用,因为我必须手动编辑它。每当我忘记时,我都会得到两者中最糟糕的情况:不合格和半合格名称的混合。

【问题讨论】:

  • 如果我的回答不充分,您能否添加有关您的特定用例的更多信息?
  • The issue 自 2010 年以来一直在 Bugzilla 上 :(

标签: java eclipse import


【解决方案1】:

我发现,如果我总是使用“半限定”名称来引用嵌套类 - 即 MySomething.Kind 而不是 Kind - Eclipse 将不会尝试自动添加import mypackage.MySomething.Kind 当我告诉它重新组织导入时,只会添加 import mypackage.MySomething 并单独保留“Class.NestedClass”引用。

【讨论】:

    【解决方案2】:

    看起来没有解决方案,但我现在正在做的事情非常实用(在脚本中使用时):

    find src -name "*.java" | xargs perl -pi -e \
            's/^(import [.\w]+\.)([A-Z]\w+)(\..*);/$1$2;/;'
    

    它只是替换了所有不需要的导入,例如

    import java.util.Map.Entry;
    

    通过外部类导入

    import java.util.Map;
    

    手动修复错误并让组织导入消除重复项只需几秒钟。它会根据需要忽略静态导入。

    警告:

    • 它涉及所有文件 (solution)
    • 你必须在 Eclipse 中刷新它们
    • 它修改了源代码,这是没有源代码控制就没有人应该做的事情

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-14
      • 1970-01-01
      • 2019-01-18
      • 1970-01-01
      • 2016-07-30
      • 2013-01-12
      相关资源
      最近更新 更多