< prev index next >
src/java.base/share/classes/java/lang/StringBuffer.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
--- 1,7 ----
/*
! * Copyright (c) 1994, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
*** 88,105 ****
* class designed for use by a single thread, {@link StringBuilder}. The
* {@code StringBuilder} class should generally be used in preference to
* this one, as it supports all of the same operations but it is faster, as
* it performs no synchronization.
*
* @author Arthur van Hoff
* @see java.lang.StringBuilder
* @see java.lang.String
* @since 1.0
*/
public final class StringBuffer
extends AbstractStringBuilder
! implements java.io.Serializable, CharSequence
{
/**
* A cache of the last value returned by toString. Cleared
* whenever the StringBuffer is modified.
--- 88,113 ----
* class designed for use by a single thread, {@link StringBuilder}. The
* {@code StringBuilder} class should generally be used in preference to
* this one, as it supports all of the same operations but it is faster, as
* it performs no synchronization.
*
+ * @apiNote
+ * {@code StringBuffer} implements {@code Comparable} but does not override
+ * {@link Object#equals equals}. Thus, the natural ordering of {@code StringBuffer}
+ * is inconsistent with equals. Care should be exercised if {@code StringBuffer}
+ * objects are used as keys in a {@code SortedMap} or elements in a {@code SortedSet}.
+ * See {@link Comparable}, {@link java.util.SortedMap SortedMap}, or
+ * {@link java.util.SortedSet SortedSet} for more information.
+ *
* @author Arthur van Hoff
* @see java.lang.StringBuilder
* @see java.lang.String
* @since 1.0
*/
public final class StringBuffer
extends AbstractStringBuilder
! implements java.io.Serializable, Comparable<StringBuffer>, CharSequence
{
/**
* A cache of the last value returned by toString. Cleared
* whenever the StringBuffer is modified.
*** 160,169 ****
--- 168,206 ----
public StringBuffer(CharSequence seq) {
this(seq.length() + 16);
append(seq);
}
+ /**
+ * Compares two {@code StringBuffer} instances lexicographically. This method
+ * follows the same rules for lexicographical comparison as defined in the
+ * {@linkplain java.lang.CharSequence#compare(java.lang.CharSequence,
+ * java.lang.CharSequence) CharSequence.compare(this, another)} method.
+ *
+ * <p>
+ * For finer-grained, locale-sensitive String comparison, refer to
+ * {@link java.text.Collator}.
+ *
+ * @implNote
+ * This method synchronizes on {@code this}, the current object, but not
+ * {@code StringBuffer another} with which {@code this StringBuffer} is compared.
+ *
+ * @param another the {@code StringBuffer} to be compared with
+ *
+ * @return the value {@code 0} if this {@code StringBuffer} contains the same
+ * character sequence as that of the argument {@code StringBuffer}; a negative integer
+ * if this {@code StringBuffer} is lexicographically less than the
+ * {@code StringBuffer} argument; or a positive integer if this {@code StringBuffer}
+ * is lexicographically greater than the {@code StringBuffer} argument.
+ *
+ * @since 11
+ */
+ @Override
+ public synchronized int compareTo(StringBuffer another) {
+ return super.compareTo(another);
+ }
+
@Override
public synchronized int length() {
return count;
}
< prev index next >