/*
 * Copyright (c) 2006, 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 javax.lang.model.element;

An immutable sequence of characters. When created by the same implementation, objects implementing this interface must obey the general equals contract when compared with each other. Therefore, Name objects from the same implementation are usable in collections while Names from different implementations may not work properly in collections.

An empty Name has a length of zero.

In the context of annotation processing, the guarantees for "the same" implementation must include contexts where the API mediated side effects of processors could be visible to each other, including successive annotation processing rounds.

Author:Joseph D. Darcy, Scott Seligman, Peter von der Ahé
See Also:
Since:1.6
/** * An immutable sequence of characters. When created by the same * implementation, objects implementing this interface must obey the * general {@linkplain Object#equals equals contract} when compared * with each other. Therefore, {@code Name} objects from the same * implementation are usable in collections while {@code Name}s from * different implementations may not work properly in collections. * * <p>An empty {@code Name} has a length of zero. * * <p>In the context of {@linkplain * javax.annotation.processing.ProcessingEnvironment annotation * processing}, the guarantees for "the same" implementation must * include contexts where the {@linkplain javax.annotation.processing * API mediated} side effects of {@linkplain * javax.annotation.processing.Processor processors} could be visible * to each other, including successive annotation processing * {@linkplain javax.annotation.processing.RoundEnvironment rounds}. * * @author Joseph D. Darcy * @author Scott Seligman * @author Peter von der Ah&eacute; * @see javax.lang.model.util.Elements#getName * @since 1.6 */
public interface Name extends CharSequence {
Returns true if the argument represents the same name as this, and false otherwise.

Note that the identity of a Name is a function both of its content in terms of a sequence of characters as well as the implementation which created it.

Params:
  • obj – the object to be compared with this element
See Also:
Returns:true if the specified object represents the same name as this
/** * Returns {@code true} if the argument represents the same * name as {@code this}, and {@code false} otherwise. * * <p>Note that the identity of a {@code Name} is a function both * of its content in terms of a sequence of characters as well as * the implementation which created it. * * @param obj the object to be compared with this element * @return {@code true} if the specified object represents the same * name as this * @see Element#equals */
boolean equals(Object obj);
Obeys the general contract of Object.hashCode.
See Also:
/** * Obeys the general contract of {@link Object#hashCode Object.hashCode}. * * @see #equals */
int hashCode();
Compares this name to the specified CharSequence. The result is true if and only if this name represents the same sequence of char values as the specified sequence.
Params:
  • cs – The sequence to compare this name against
See Also:
Returns:true if this name represents the same sequence of char values as the specified sequence, false otherwise
/** * Compares this name to the specified {@code CharSequence}. The result * is {@code true} if and only if this name represents the same sequence * of {@code char} values as the specified sequence. * * @return {@code true} if this name represents the same sequence * of {@code char} values as the specified sequence, {@code false} * otherwise * * @param cs The sequence to compare this name against * @see String#contentEquals(CharSequence) */
boolean contentEquals(CharSequence cs); }