Возможно ли в любой Java IDE свернуть определения типов в исходном коде? - PullRequest
3 голосов
/ 31 декабря 2010

В последнее время мне часто приходится читать код Java следующим образом:

LinkedHashMap<String, Integer> totals =  new LinkedHashMap<String, Integer>(listOfRows.get(0))
for (LinkedHashMap<String, Integer> row : (ArrayList<LinkedHashMap<String,Integer>>) table.getValue()) {    
    for(Entry<String, Integer> elem : row.entrySet()) {
        String colName=elem.getKey();
        int Value=elem.getValue();
        int oldValue=totals.get(colName);

        int sum = Value + oldValue;
        totals.put(colName, sum);
    }
}

Из-за длинных и вложенных определений типов простой алгоритм становится довольно непонятным.Поэтому я хотел бы удалить или свернуть определения типов с помощью своей IDE, чтобы увидеть код Java без таких типов, как:

totals =  new (listOfRows.get(0))
for (row : table.getValue()) {    
    for(elem : row.entrySet()) {
        colName=elem.getKey();
        Value=elem.getValue();
        oldValue=totals.get(colName);

        sum = Value + oldValue;
        totals.put(colName, sum);
    }
}

Конечно, лучшим способом было бы свернуть определения типов, но при перемещении мышиповерх переменной покажите тип в виде всплывающей подсказки.Есть ли Java IDE или плагин для IDE, который может сделать это?

1 Ответ

5 голосов
/ 31 декабря 2010

IntelliJ IDEA преобразует типы в правой части декларации в <~>. Так что:

Map<Integer, String> m = new HashMap<Integer, String>();

Появится в сложенном виде:

Map<Integer, String> m = new HashMap<~>();

Это можно установить с помощью свойства Редактор / Свертывание кода / Общий конструктор и Параметры метода , и версия сообщества IDE бесплатна.

<ч /> Или вы можете использовать Scala с выводом типа:

val totals = new mutable.Map[String, Int]
for { 
    row <- table.getValue
    (colName, value) <- row.entrySet 
} totals += (colName -> (value + totals.get(colName) getOrElse 0)
...