2009-07-28 4 views
10

Wenn ich diesen Code:Groovy Karte Syntaxfehler


import javax.swing.* 
import java.awt.image.* 

def xMap = [ 
    BufferedImage.TYPE_3BYTE_BGR  : "3 byte BGR", 
    BufferedImage.TYPE_4BYTE_ABGR : "4 byte ABGR", 
] 

die IDE wird diesen Fehler erzeugen:

illegal colon after argument expression; 
    solution: a complex label expression before a colon must be parenthesized at

Gibt es eine andere Lösung dieses Problems als zu schreiben:


def type_3byte_bgr = BufferedImage.TYPE_3BYTE_BGR 

für alle Konstanten?

Antwort

20

Kartenliterale erfordern, dass ihre Schlüssel gültige Bezeichner oder in Klammern sind. Dies sollte funktionieren:

def xMap = [ 
    (BufferedImage.TYPE_3BYTE_BGR)  : "3 byte BGR", 
    (BufferedImage.TYPE_4BYTE_ABGR) : "4 byte ABGR",] 
2

Die Fehlermeldung zeigt Ihnen, wie Sie es lösen können: Klammern Sie den Label-Ausdruck ein.

import java.awt.image.BufferedImage 

def xMap = [ 
    (BufferedImage.TYPE_3BYTE_BGR)  : "3 byte BGR", 
    (BufferedImage.TYPE_4BYTE_ABGR) : "4 byte ABGR", 
] 

println xMap[BufferedImage.TYPE_3BYTE_BGR] 
+4

Kontrollieren Sie bitte Ihre Sprache. – Geo