intellij想法如何排序默认导入?

时间:2016-10-09 06:09:52

标签: java eclipse netbeans intellij-idea

我做了一些调查,得到了奇怪的结果。 我的课程:

Test.java:

package com.company;

import com.company.data.Byte;
import com.company.data.Class;
import com.company.zata.Long;
import com.company.zata.Short;
import com.company.data.*;
import com.company.zata.*;


public class Test {
    Object o1 = new Class();
    Object o2 = new SomeClass();
    Object o3 = new AppleClass();
    Object o4 = new Byte();
    Object o5 = new Long();
    Object o6 = new Short();
    Object o7 = new BetaClass();

}

所有条款都很简单,需要进行测试。例如:

之一
package com.company.data;

public class Class {
    public Class() {

    }
}

课程树:

Tree of classes

我尝试为Intellij IDEA,Eclipse和Netbeans组织导入并获得结果:

Intellij IDEA在组织进口之前:

import com.company.data.Byte;
import com.company.data.Class;
import com.company.zata.Long;
import com.company.zata.Short;
import com.company.data.*;
import com.company.zata.*;

组织进口后的Intellij IDEA:

import com.company.data.Byte;
import com.company.data.Class;
import com.company.data.*;
import com.company.zata.*;
import com.company.zata.Long;
import com.company.zata.Short;

Eclipse在组织导入之前:

import com.company.data.Byte;
import com.company.data.Class;
import com.company.zata.Long;
import com.company.zata.Short;
import com.company.data.*;
import com.company.zata.*;
组织导入后的

Eclipse:

import com.company.data.*;
import com.company.data.Byte;
import com.company.data.Class;
import com.company.zata.*;
import com.company.zata.Long;
import com.company.zata.Short;

组织导入前的NetBeans:

import com.company.data.Byte;
import com.company.data.Class;
import com.company.zata.Long;
import com.company.zata.Short;
import com.company.data.*;
import com.company.zata.*;

组织导入后的NetBeans:

import com.company.data.Byte;
import com.company.data.Class;
import com.company.data.*;
import com.company.zata.*;
import com.company.zata.Long;
import com.company.zata.Short;

Eclipse按字母顺序排序。

如何排序导入Intellij IDEA和NetBeans - 我不明白。 我期望Intellij IDEA和NetBeans的结果如下:

import com.company.data.Byte;
import com.company.data.Class;
import com.company.data.*;
import com.company.zata.Long;
import com.company.zata.Short;
import com.company.zata.*;

为什么Intellij Idea和Netbeans会以这种方式对导入进行排序?

3 个答案:

答案 0 :(得分:1)

关键是:为什么你会期望不同的工具首先表现出相同的方式?!

您看,这些不同的IDE使用不同的规则来确定导入的组织方式;当然,这些规则可以调整。

请参阅此example如何使IntelliJ表现得像eclipse;并通过here了解如何为这些内容编辑Netbeans设置。

答案 1 :(得分:0)

这只是我的猜测。

我看到IntelliJ和Netbeans试图尽可能少地移动进口。看看两个.*进口如何粘在一起?我认为这是因为在它组织进口之前,它们也在一起。

两位编辑看到,如果他们只是向上移动最后两行并使第三行和第四行替换最后两行的位置,则包名将按字母顺序排序!这就是他们所做的。

不幸的是,我自己无法测试。但是,如果更改.*导入的初始位置,则组织导入的结果可能会更改。

尝试组织:

import com.company.data.Byte;
import com.company.data.Class;
import com.company.zata.Long;
import com.company.data.*;
import com.company.zata.Short;
import com.company.zata.*;

如果我的猜测是正确的,编辑器将交换第三和第四行。

答案 2 :(得分:0)

我使用Intellij IDEA 15.0.1获得了结果。 如果我们尝试使用最新版本的Intellij IDEA组织导入,我们得到结果:

import com.company.data.Byte;
import com.company.data.Class;
import com.company.data.*;
import com.company.zata.Long;
import com.company.zata.Short;
import com.company.zata.*;

我认为这是正确的排序。