com.google.gwt.core.ext.linker

## Class Artifact<C extends Artifact<C>>

- java.lang.Object
- - com.google.gwt.core.ext.linker.Artifact<C>

- Type Parameters:
    `C` - The type of Artifact interface that the Artifact can be compared to.
  All Implemented Interfaces:
    java.io.Serializable, java.lang.Comparable<Artifact<?>>
  Direct Known Subclasses:
    CompilationMetricsArtifact, CompilationResult, EmittedArtifact, ModuleMetricsArtifact, PrecompilationMetricsArtifact, RpcDataArtifact, RpcLogArtifact, RpcPolicyFileArtifact, ScriptReference, StylesheetReference, SymbolMapsLinker.ScriptFragmentEditsArtifact

      public abstract class Artifact<C extends Artifact<C>>
      extends java.lang.Object
      implements java.lang.Comparable<Artifact<?>>, java.io.Serializable

  A base type for all artifacts relating to the link process. In order to ensure stable output between runs of the compiler, Artifact types must implement a stable comparison between instances of a relevant base type (the exact comparison order is irrelevant).
  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `Artifact(java.lang.Class<? extends Linker> linker)` Constructor.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `compareTo(Artifact<?> o)`
    `protected abstract int` | `compareToComparableArtifact(C o)` Performs comparison with an artifact of a compatible base type.
    `boolean` | `equals(java.lang.Object obj)` Delegates to `compareTo(Artifact)`.
    `protected abstract java.lang.Class<C>` | `getComparableArtifactType()` Returns the base type to use for comparisons between Artifacts.
    `java.lang.Class<? extends Linker>` | `getLinker()` Returns the Linker that created the Artifact.
    `abstract int` | `hashCode()` The class which is returned from `getComparableArtifactType()` must declare a final implementation which returns the same hash code for objects for which `compareToComparableArtifact(Artifact)` returns 0.
    `boolean` | `isTransferableFromShards()` Returns whether the `Transferable` annotation is present on this class.
    `java.lang.String` | `toString()`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### Artifact

          protected Artifact(java.lang.Class<? extends Linker> linker)

      Constructor.
      Parameters:
        `linker` - the type of Linker that instantiated the Artifact.

  - ### Method Detail

    - #### compareTo

          public final int compareTo(Artifact<?> o)

      Specified by:
        `compareTo` in interface `java.lang.Comparable<Artifact<?>>`

    - #### equals

          public final boolean equals(java.lang.Object obj)

      Delegates to `compareTo(Artifact)`.
      Overrides:
        `equals` in class `java.lang.Object`

    - #### getLinker

          public final java.lang.Class<? extends Linker> getLinker()

      Returns the Linker that created the Artifact.

    - #### hashCode

          public abstract int hashCode()

      The class which is returned from `getComparableArtifactType()` must declare a final implementation which returns the same hash code for objects for which `compareToComparableArtifact(Artifact)` returns 0.
      Overrides:
        `hashCode` in class `java.lang.Object`

    - #### isTransferableFromShards

          public final boolean isTransferableFromShards()

      Returns whether the `Transferable` annotation is present on this class. See `Transferable` for the implications.

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### compareToComparableArtifact

          protected abstract int compareToComparableArtifact(C o)

      Performs comparison with an artifact of a compatible base type. Objects which compare to 0 are assumed equal, and must return the same `hashCode()`.

    - #### getComparableArtifactType

          protected abstract java.lang.Class<C> getComparableArtifactType()

      Returns the base type to use for comparisons between Artifacts. All concrete implementations of this methods must be final.