diff -r 000000000000 -r 9a66ca7c79fa src/share/classes/javax/lang/model/element/Name.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/share/classes/javax/lang/model/element/Name.java Sat Dec 01 00:00:00 2007 +0000 @@ -0,0 +1,89 @@ +/* + * Copyright 2006 Sun Microsystems, Inc. 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. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.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 {@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. + * + *

An empty {@code Name} has a length of zero. + * + *

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é + * @see javax.lang.model.util.Elements#getName + * @since 1.6 + */ +public interface Name extends CharSequence { + /** + * Returns {@code true} if the argument represents the same + * name as {@code this}, and {@code false} otherwise. + * + *

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 {@link Object#hashCode Object.hashCode}. + * + * @see #equals + */ + int hashCode(); + + /** + * 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); +}