Gần đây tôi đã đọc về hành vi của GStringImpl
s so với String
khi được sử dụng trong bộ sưu tập trong Groovy.Groovy GStringImpl và hành vi chuỗi
Tôi hiểu rằng lý do này là false ...
"${'test'}".equals("test") == false
là do sự yêu cầu đối xứng của hợp đồng .equals()
, tuy nhiên tôi đã tự hỏi nếu có một lý do không thể GStringImpl
chỉ được đánh giá là String
ngay lập tức. Vì vậy, khi tôi làm điều gì đó như thế này ...
"${'someString'}"
Tôi không nhận được một GStringImpl
, tôi chỉ nhận được một đồng bằng Java String
trở lại, mà tôi ngay lập tức có thể sử dụng như là chìa khóa trong một bản đồ, ví dụ .
Tôi biết có một số cách giải quyết, như
String s = "${'someString'}"
tuy nhiên những thứ như thế này là một chút bất tiện, và mixup giữa GStringImpl
và String
có vẻ là một lớn 'Gotcha' cho newbees Groovy.
Đủ công bằng. Cảm ơn lời giải thích. – rcgeorge23
Chúng tôi có thể tự động mở rộng lớp GStringImpl để tự động gọi .toString() khi xây dựng không? –