2010-12-31 4 views
3

In letzter Zeit habe ich oft gelesen, Java-Code wie folgt aus:Ist es in einer Java IDE möglich, die Typdefinitionen im Quellcode zu reduzieren?

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

Aufgrund der langen und verschachtelten Typdefinitionen der einfachen Algorithmus ganz verdeckt wird. So wünschte ich, ich könnte die Typdefinitionen mit meinen IDE entfernen oder reduziere den Java-Code ohne Typen wie zu sehen:

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

Der beste Weg wäre natürlich die Typdefinitionen kollabieren, aber beim Bewegen der Maus über eine Variable zeigt den Typ als Tooltip an. Gibt es eine Java IDE oder ein Plugin für eine IDE, die das kann?

+0

.NET (Visual Studio) hat diese Funktion, sie nennen es "Region". Ich hatte vor ein paar Monaten versucht, nach dieser Funktion in Eclipse zu suchen, aber ich habe nichts gefunden. :( –

Antwort

5

IntelliJ IDEA konvertiert die Typen auf der rechten Seite einer Deklaration in <~>. das so:

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

erscheint gefaltet, wie:

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

Dies ist einstellbar über die Editor/Code-Folding/Generic Constructor und Methodenparameter Eigenschaft und die community edition of the IDE ist frei.


Oder Sie Scala verwenden könnte, die Folgerung geben hat:

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