package edu.stanford.nlp.util;
import edu.stanford.nlp.util.logging.PrettyLoggable;
import java.io.Serializable;
/**
* <p>
* Base type for all annotatable core objects. Should usually be instantiated as
* {@link ArrayCoreMap}. Many common key definitions live in
* {@link edu.stanford.nlp.ling.CoreAnnotations}, but others may be defined elsewhere. See
* {@link edu.stanford.nlp.ling.CoreAnnotations} for details.
* </p>
*
* <p>
* Note that implementations of this interface must take care to implement
* equality correctly: by default, two CoreMaps are .equal if they contain the
* same keys and all corresponding values are .equal. Subclasses that wish to
* change this behavior (such as {@link HashableCoreMap}) must make sure that
* all other CoreMap implementations have a special case in their .equals to use
* that equality definition when appropriate. Similarly, care must be taken when
* defining hashcodes. The default hashcode is 37 * sum of all keys' hashcodes
* plus the sum of all values' hashcodes. However, use of this class as HashMap
* keys is discouraged because the hashcode can change over time. Consider using
* a {@link HashableCoreMap}.
* </p>
*
* @author dramage
* @author rafferty
*/
public interface CoreMap extends TypesafeMap, PrettyLoggable, Serializable {
/** Attempt to provide a briefer and more human readable String for the contents of
* a CoreMap.
* The method may not be capable of printing circular dependencies in CoreMaps.
*
* @param what An array (varargs) of Strings that say what annotation keys
* to print. These need to be provided in a shortened form where you
* are just giving the part of the class name without package and up to
* "Annotation". That is,
* edu.stanford.nlp.ling.CoreAnnotations.PartOfSpeechAnnotation --> PartOfSpeech
* . As a special case, an empty array means to print everything, not nothing.
* @return A more human readable String giving possibly partial contents of a
* CoreMap.
*/
public String toShorterString(String... what);
}