【问题标题】:Get Eclipse to prefer static imports of nested classes让 Eclipse 更喜欢嵌套类的静态导入
【发布时间】:2014-01-29 19:26:18
【问题描述】:

假设我们有一个类FooCollection,其中包含一个有点长的静态嵌套类列表*:

public class FooCollection {
    public static class FooA implements Foo {
        // ...
    }

    public static class FooB implements Foo {
        // ...
    }

    // ...
}

假设现在我们有另一个类使用所有这些类。目前,如果我们引用类本身,Eclipse 将自动格式化以分别导入每个类

import com.me.FooCollection.FooA;
import com.me.FooCollection.FooB;
import com.me.FooCollection.FooC;
import com.me.FooCollection.FooD;

// and then later something like
callBaz( FooA.class );

我希望避免因同事使用 IntelliJ 而导致导入膨胀和不断提交更改导入,将其导入为

import static com.me.FooCollection.*;

但是,我似乎找不到任何东西可以让 Eclipse 执行此操作。有什么我遗漏的东西或者有什么方法可以让 Eclipse 这样做吗?

编辑:我实际上刚刚检查过,即使设置了开始导入阈值,即使 new FooA() 仍会导致导入切换回此状态。

*) 我意识到这并不是一个好的设计,但它是一个遗留应用程序,因此我们假设代码无法更改。

【问题讨论】:

  • 此设置是否与正常的“组织导入”分开(或不存在),后者设置触发* 使用的导入数量?
  • 是的,因为不幸的是,该设置仅适用于方法。
  • 似乎你得到了你想要的 Eclipse Mars...虽然仍然没有设置来控制行为:-)

标签: java eclipse eclipse-kepler


【解决方案1】:

Dave Newton 引用了 Window -> Preferences 中“Organize Imports”下的设置。您可以使用通配符设置导入阈值。看起来在去通配符之前默认是 99 个类。如果您将其设置为 2,它看起来会满足您的需求!

【讨论】:

  • 抱歉,我的问题不够精确——我的错!我知道这个设置,但如果类被直接引用,如FooA.class,它将不适用。
  • "Edit:" 这个设置似乎只影响方法,不影响静态类。
【解决方案2】:

不确定,是否有办法让它在全球范围内工作,但有一条捷径可以一次处理一个成员。

如果您选择 FooCollection.FooA 并按 Ctrl + Shift + M 将添加静态导入,并且还将更新所有其他引用在那个文件中。

我主要使用它来导入枚举和常量。

【讨论】:

  • 这适用于方法,但如果我直接将类引用为FooA.class(我不提是不好的),它将不起作用。
  • 是的,你是对的。我认为它会起作用,只是经过测试,它不起作用。
  • 我刚查了一下,它根本不适用于静态类,即使没有被类引用。
猜你喜欢
  • 2016-10-08
  • 2011-03-07
  • 2013-05-11
  • 2015-01-18
  • 2021-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多