Я недавно читал о поведении GStringImpl
s vs String
s при использовании в коллекциях Groovy.Groovy GStringImpl и поведение String
Я понимаю, что причина этого оценивается как ложное ...
"${'test'}".equals("test") == false
обусловлено требованием симметрии .equals()
контракта, однако мне было интересно, если бы была причина GStringImpl
не мог просто оцените сразу String
. Так что, когда я делаю что-то вроде этого ...
"${'someString'}"
Я не получить GStringImpl
, я просто получить простой Java String
назад, который я могу сразу же использовать в качестве ключа в карте, например, ,
Я знаю, что есть некоторые обходные пути, как
String s = "${'someString'}"
однако такие вещи, как это немного неудобно, и путаница между GStringImpl
и String
кажется большой «Гоча» для Groovy Newbees.
Ярмарка достаточно. Спасибо за объяснение. – rcgeorge23
Можем ли мы динамически расширить класс GStringImpl для автоматического вызова .toString() при построении? –