2016-10-09 4 views
3

Я провел некоторое расследование и получил странные результаты. Мои классы:Как intellij идея сортировать импорт по умолчанию?

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(); 

} 

Все clases просто для теста. Например один из всех:

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 Идея и импорта сортировать Netbeans на этом пути?

ответ

1

Дело в следующем: почему вы ожидаете, что разные инструменты ведут себя одинаково в первую очередь ?!

Вы видите, что эти разные IDE используют разные правила , которые определяют, как организованы импорт; и, конечно, эти правила могут быть изменены.

Посмотрите это example как сделать IntelliJ таким же, как eclipse; и более here за то, как отредактировать настройку Netbeans для этого материала.

+0

Не понимаю, зачем импортировать com.company.data. *; после импорта com.company.data.Class ;, но импортировать com.company.zata. *; перед импортом com.company.zata.Long; ? Я хочу знать алгоритм. –

+0

Почему? Поскольку вы можете использовать оба инструмента в одном проекте/компании, и вам может потребоваться свести к минимуму постоянную модификацию деклараций импорта. – arpadf

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.*; 

Если мое предположение верно, то редактор будет поменять местами третьи и четвертые строки.

+0

І получил тот же результат. –

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.*; 

Я думаю, что это правильно сортировка.