dự án của tôi có mã như sau:Chaining Null-Safe hành
params.stringValue?.trim().replaceAll('aa', 'a')
Chúng tôi hy vọng rằng nếu params.stringValue
là null, mà cảtrim()
và replaceAll()
sẽ không được gọi.
Tuy nhiên chúng tôi đã nhận được một NullPointerException
trên dòng này nói rằng replaceAll()
không thể được gọi trên một đối tượng rỗng.
Chúng tôi đã phải thay đổi mã để được như thế này:
params.stringValue?.trim()?.replaceAll('aa', 'a')
Tại sao đoạn mã đầu tiên ở trên không hoạt động? Đây có phải là một lỗi trong Groovy rằng nó tiếp tục đánh giá biểu thức sau khi một null đã được gặp phải một lần?
Tôi nghĩ đó là "tính năng", chứ không phải là lỗi (!) – Armand