Groovy ошибка синтаксиса карты

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


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

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

Ответ 1

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

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

Ответ 2

Сообщение об ошибке сообщает вам, как его решить: скопировать выражение метки.

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]