Module java.base
Package java.util.jar

## Class Manifest

- java.lang.Object
- - java.util.jar.Manifest

All Implemented Interfaces:
  `Cloneable`

    public class Manifest
    extends Object
    implements Cloneable

The Manifest class is used to maintain Manifest entry names and their associated Attributes. There are main Manifest Attributes as well as per-entry Attributes. For information on the Manifest format, please see the Manifest format specification.

Since:
  1.2
See Also:
  `Attributes`

### Constructor Summary

Constructors
`Manifest()` Constructs a new, empty Manifest.
`Manifest​(InputStream is)` Constructs a new Manifest from the specified input stream.
`Manifest​(Manifest man)` Constructs a new Manifest that is a copy of the specified Manifest.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `clear()` Clears the main Attributes as well as the entries in this Manifest.
`Object` `clone()` Returns a shallow copy of this Manifest.
`boolean` `equals​(Object o)` Returns true if the specified Object is also a Manifest and has the same main Attributes and entries.
`Attributes` `getAttributes​(String name)` Returns the Attributes for the specified entry name.
`Map<String,​Attributes>` `getEntries()` Returns a Map of the entries contained in this Manifest.
`Attributes` `getMainAttributes()` Returns the main Attributes for the Manifest.
`int` `hashCode()` Returns the hash code for this Manifest.
`void` `read​(InputStream is)` Reads the Manifest from the specified InputStream.
`void` `write​(OutputStream out)` Writes the Manifest to the specified OutputStream.

### Methods declared in class java.lang.Object

`finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### Manifest

    public Manifest()

Constructs a new, empty Manifest.

#### Manifest

    public Manifest​(InputStream is)
             throws IOException

Constructs a new Manifest from the specified input stream.

Parameters:
  `is` - the input stream containing manifest data
Throws:
  `IOException` - if an I/O error has occurred

#### Manifest

    public Manifest​(Manifest man)

Constructs a new Manifest that is a copy of the specified Manifest.

Parameters:
  `man` - the Manifest to copy

### Method Detail

#### getMainAttributes

    public Attributes getMainAttributes()

Returns the main Attributes for the Manifest.

Returns:
  the main Attributes for the Manifest

#### getEntries

    public Map<String,​Attributes> getEntries()

Returns a Map of the entries contained in this Manifest. Each entry is represented by a String name (key) and associated Attributes (value). The Map permits the `null` key, but no entry with a null key is created by `read(java.io.InputStream)`, nor is such an entry written by using `write(java.io.OutputStream)`.

Returns:
  a Map of the entries contained in this Manifest

#### getAttributes

    public Attributes getAttributes​(String name)

Returns the Attributes for the specified entry name. This method is defined as:

          return (Attributes)getEntries().get(name)

Though `null` is a valid `name`, when `getAttributes(null)` is invoked on a `Manifest` obtained from a jar file, `null` will be returned. While jar files themselves do not allow `null`-named attributes, it is possible to invoke `getEntries()` on a `Manifest`, and on that result, invoke `put` with a null key and an arbitrary value. Subsequent invocations of `getAttributes(null)` will return the just-`put` value.

Note that this method does not return the manifest's main attributes; see `getMainAttributes()`.

Parameters:
  `name` - entry name
Returns:
  the Attributes for the specified entry name

#### clear

    public void clear()

Clears the main Attributes as well as the entries in this Manifest.

#### write

    public void write​(OutputStream out)
               throws IOException

Writes the Manifest to the specified OutputStream. Attributes.Name.MANIFEST_VERSION must be set in MainAttributes prior to invoking this method.

Parameters:
  `out` - the output stream
Throws:
  `IOException` - if an I/O error has occurred
See Also:
  `getMainAttributes()`

#### read

    public void read​(InputStream is)
              throws IOException

Reads the Manifest from the specified InputStream. The entry names and attributes read will be merged in with the current manifest entries.

Parameters:
  `is` - the input stream
Throws:
  `IOException` - if an I/O error has occurred

#### equals

    public boolean equals​(Object o)

Returns true if the specified Object is also a Manifest and has the same main Attributes and entries.

Overrides:
  `equals` in class `Object`
Parameters:
  `o` - the object to be compared
Returns:
  true if the specified Object is also a Manifest and has the same main Attributes and entries
See Also:
  `Object.hashCode()`, `HashMap`

#### hashCode

    public int hashCode()

Returns the hash code for this Manifest.

Overrides:
  `hashCode` in class `Object`
Returns:
  a hash code value for this object.
See Also:
  `Object.equals(java.lang.Object)`, `System.identityHashCode(java.lang.Object)`

#### clone

    public Object clone()

Returns a shallow copy of this Manifest. The shallow copy is implemented as follows:

         public Object clone() { return new Manifest(this); }

Overrides:
  `clone` in class `Object`
Returns:
  a shallow copy of this Manifest
See Also:
  `Cloneable`