Summary
Explicitly add Appendable
to the list of implemented interfaces of StringBuffer
and StringBuilder
.
Problem
StringBuffer
and StringBuilder
"mysteriously" are Appendable
by virtue of inheriting from their non-public superclass.
Solution
Explicitly add Appendable
to the implements clauses of StringBuffer
and StringBuilder
.
Specification
diff --git a/src/java.base/share/classes/java/lang/StringBuffer.java b/src/java.base/share/classes/java/lang/StringBuffer.java
index b0ee2a5c2e3..d62696d9300 100644
--- a/src/java.base/share/classes/java/lang/StringBuffer.java
+++ b/src/java.base/share/classes/java/lang/StringBuffer.java
@@ -111,7 +111,7 @@ import jdk.internal.vm.annotation.IntrinsicCandidate;
*/
public final class StringBuffer
extends AbstractStringBuilder
- implements Serializable, Comparable<StringBuffer>, CharSequence
+ implements Appendable, Serializable, Comparable<StringBuffer>, CharSequence
{
/**
diff --git a/src/java.base/share/classes/java/lang/StringBuilder.java b/src/java.base/share/classes/java/lang/StringBuilder.java
index 17fd105ad3f..bffbd14ef50 100644
--- a/src/java.base/share/classes/java/lang/StringBuilder.java
+++ b/src/java.base/share/classes/java/lang/StringBuilder.java
@@ -90,7 +90,7 @@ import java.io.StreamCorruptedException;
*/
public final class StringBuilder
extends AbstractStringBuilder
- implements java.io.Serializable, Comparable<StringBuilder>, CharSequence
+ implements Appendable, java.io.Serializable, Comparable<StringBuilder>, CharSequence
{
/** use serialVersionUID for interoperability */
- csr of
-
JDK-8304945 StringBuilder and StringBuffer should implement Appendable explicitly
-
- Resolved
-