Синтаксическая ошибка Groovy map

Если у меня есть этот код :


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

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

IDE создаст эту ошибку:

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

есть ли другое решение для этого, чем написать :


def type_3byte_bgr = BufferedImage.TYPE_3BYTE_BGR

для всех констант?

2 ответов


литералы карт требуют, чтобы их ключи были действительными идентификаторами или в круглых скобках. Это должно сработать:

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

сообщение об ошибке сообщает вам, как его решить: заключить выражение метки в скобки.

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]