2013-10-18 10 views
5

ich linkedlist als Stapel in groovygleiches LinkedList Code unterschiedliches Verhalten zwischen groovigen und Java, warum

bin mit wie doc sagt, pop() nimmt Ulme aus den ersten

Stack Method Equivalent Deque Method 
push(e)  addFirst(e) 
pop()   removeFirst() 

so ein linkedlist [1, 2,3] sollte pop() 1 2 3

und es tut in Java, aber nicht in groovy. WARUM?

Test unter

A.java

import java.util.*; 

public class A{ 


    public static void main(String[] args){ 

     String[] x = "1/2/3/".split("/"); 
     LinkedList <String> stack = new LinkedList<String>(Arrays.asList(x)); 
     System.out.println(stack.pop()); 
    } 
} 

kompilieren und ausführen

$ javac A.java 
$ java A 
1 

runing in groovy

$ ln -s A.java A.groovy 
$ groovy A.groovy 
3 

hier ist mein Java und groovy Version

$ java -version 
java version "1.6.0_51" 
Java(TM) SE Runtime Environment (build 1.6.0_51-b11-457-11M4509) 
Java HotSpot(TM) 64-Bit Server VM (build 20.51-b01-457, mixed mode) 

$ groovy -version 
Groovy Version: 2.1.5 JVM: 1.6.0_51 Vendor: Apple Inc. OS: Mac OS X 
+0

vielleicht sollten Sie die Ausgabe der Liste Zustand vor dem Pop. – BevynQ

+0

@BevynQ scheint ok groovy: 000> [1,2,3] als LinkedList ===> [1, 2, 3] – farmer1992

Antwort

6

Dies scheint ein "Feature" von groovy zu sein. Default Groovy Methods werden beschrieben als This class defines new groovy methods which appear on normal JDK classes inside the Groovy environment.

Eine der Methoden, die DefaultGroovyMethods bietet, ist pop(), die wie beschrieben wird: Removes the last item from the List. So scheint es, dass Groovy in eine andere Implementierung von pop() webt, die mit in Konflikt, was LinkedList liefert Ihnen standardmäßig.

A bug report gegen GDM vor ein paar Jahren eingereicht beschreibt es am besten, und bietet einige zusätzliche Kommentar: LinkedList seems to implement List and a pop/push method, thus the classes method should not be shadowed by a DGM method. Only if we had a LinkedList#pop/push method in DGM, it should be different.

Verwandte Themen