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]