Mój projekt ma kod tak:Chaining Null-Safe Operator
params.stringValue?.trim().replaceAll('aa', 'a')
Spodziewaliśmy się, że jeśli params.stringValue
była zerowa, że zarównotrim()
i replaceAll()
nie można nazwać.
Jednak otrzymywaliśmy w tej linii NullPointerException
, że replaceAll()
nie może zostać wywołane na NULL Object.
Musieliśmy zmienić kod, aby być tak:
params.stringValue?.trim()?.replaceAll('aa', 'a')
Dlaczego pierwszy fragment kodu powyżej nie działa? Czy jest to błąd w Groovy, który kontynuuje ocenę wyrażenia po napotkaniu zerowej wartości?
Myślę, że jest to "funkcja", a nie błąd (!) – Armand