Hey Vitaly,
Seems like a good idea. You probably want to null check 'replacement' before the bail out as the method is specified as throwing NPE in that case.
Thanks for your feedback. See the adjusted patch below. ===== PATCH ====== diff --git a/src/java.base/share/classes/java/lang/String.java b/src/java.base/share/classes/java/lang/String.java --- a/src/java.base/share/classes/java/lang/String.java +++ b/src/java.base/share/classes/java/lang/String.java @@ -2176,12 +2176,13 @@ * @since 1.5 */ public String replace(CharSequence target, CharSequence replacement) { + Objects.requireNonNull(replacement); String tgtStr = target.toString(); - String replStr = replacement.toString(); int j = indexOf(tgtStr); if (j < 0) { return this; } + String replStr = replacement.toString(); int tgtLen = tgtStr.length(); int tgtLen1 = Math.max(tgtLen, 1); int thisLen = length();