/*
 * Copyright (c) 1997, 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
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package java.text;

An Annotation object is used as a wrapper for a text attribute value if the attribute has annotation characteristics. These characteristics are:
  • The text range that the attribute is applied to is critical to the semantics of the range. That means, the attribute cannot be applied to subranges of the text range that it applies to, and, if two adjacent text ranges have the same value for this attribute, the attribute still cannot be applied to the combined range as a whole with this value.
  • The attribute or its value usually do no longer apply if the underlying text is changed.
An example is grammatical information attached to a sentence: For the previous sentence, you can say that "an example" is the subject, but you cannot say the same about "an", "example", or "exam". When the text is changed, the grammatical information typically becomes invalid. Another example is Japanese reading information (yomi).

Wrapping the attribute value into an Annotation object guarantees that adjacent text runs don't get merged even if the attribute values are equal, and indicates to text containers that the attribute should be discarded if the underlying text is modified.

See Also:
Since:1.2
/** * An Annotation object is used as a wrapper for a text attribute value if * the attribute has annotation characteristics. These characteristics are: * <ul> * <li>The text range that the attribute is applied to is critical to the * semantics of the range. That means, the attribute cannot be applied to subranges * of the text range that it applies to, and, if two adjacent text ranges have * the same value for this attribute, the attribute still cannot be applied to * the combined range as a whole with this value. * <li>The attribute or its value usually do no longer apply if the underlying text is * changed. * </ul> * * An example is grammatical information attached to a sentence: * For the previous sentence, you can say that "an example" * is the subject, but you cannot say the same about "an", "example", or "exam". * When the text is changed, the grammatical information typically becomes invalid. * Another example is Japanese reading information (yomi). * * <p> * Wrapping the attribute value into an Annotation object guarantees that * adjacent text runs don't get merged even if the attribute values are equal, * and indicates to text containers that the attribute should be discarded if * the underlying text is modified. * * @see AttributedCharacterIterator * @since 1.2 */
public class Annotation {
Constructs an annotation record with the given value, which may be null.
Params:
  • value – the value of the attribute
/** * Constructs an annotation record with the given value, which * may be null. * * @param value the value of the attribute */
public Annotation(Object value) { this.value = value; }
Returns the value of the attribute, which may be null.
Returns:the value of the attribute
/** * Returns the value of the attribute, which may be null. * * @return the value of the attribute */
public Object getValue() { return value; }
Returns the String representation of this Annotation.
Returns:the String representation of this Annotation
/** * Returns the String representation of this Annotation. * * @return the {@code String} representation of this {@code Annotation} */
public String toString() { return getClass().getName() + "[value=" + value + "]"; } private Object value; };