Attributes (Java SE 15 & JDK 15)
Description: declaration: module: java.base, package: java.util.jar, class: Attributes
Keywords: java.util.jar.Attributes class

Module java.base
Package java.util.jar

# Class Attributes

java.lang.Object
java.util.jar.Attributes

All Implemented Interfaces:
  `Cloneable`, `Map<Object,​Object>`

    public class Attributes
    extends Object
    implements Map<Object,​Object>, Cloneable

The Attributes class maps Manifest attribute names to associated string values. Valid attribute names are case-insensitive, are restricted to the ASCII characters in the set [0-9a-zA-Z_-], and cannot exceed 70 characters in length. There must be a colon and a SPACE after the name; the combined length will not exceed 72 characters. Attribute values can contain any characters and will be UTF8-encoded when written to the output stream. See the JAR File Specification for more information about valid attribute names and values.

This map and its views have a predictable iteration order, namely the order that keys were inserted into the map, as with `LinkedHashMap`.

Since:
  1.2
See Also:
  `Manifest`

- ## Nested Class Summary

  Nested Classes
  Modifier and Type | Class | Description
  --- | --- | ---
  `static class` | `Attributes.Name` | The Attributes.Name class represents an attribute name stored in this Map.

  ## Nested classes/interfaces declared in interface java.util.Map

  `Map.Entry<K,​V>`

- ## Field Summary

  Fields
  Modifier and Type | Field | Description
  --- | --- | ---
  `protected Map<Object,​Object>` | `map` | The attribute name-value mappings.

- ## Constructor Summary

  Constructors
  Constructor | Description
  --- | ---
  `Attributes()` | Constructs a new, empty Attributes object with default size.
  `Attributes​(int size)` | Constructs a new, empty Attributes object with the specified initial size.
  `Attributes​(Attributes attr)` | Constructs a new Attributes object with the same attribute name-value mappings as in the specified Attributes.

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `void` | `clear()` | Removes all attributes from this Map.
  `Object` | `clone()` | Returns a copy of the Attributes, implemented as follows:
  `boolean` | `containsKey​(Object name)` | Returns true if this Map contains the specified attribute name (key).
  `boolean` | `containsValue​(Object value)` | Returns true if this Map maps one or more attribute names (keys) to the specified value.
  `Set<Map.Entry<Object,​Object>>` | `entrySet()` | Returns a Collection view of the attribute name-value mappings contained in this Map.
  `boolean` | `equals​(Object o)` | Compares the specified object to the underlying map for equality.
  `Object` | `get​(Object name)` | Returns the value of the specified attribute name, or null if the attribute name was not found.
  `String` | `getValue​(String name)` | Returns the value of the specified attribute name, specified as a string, or null if the attribute was not found.
  `String` | `getValue​(Attributes.Name name)` | Returns the value of the specified Attributes.Name, or null if the attribute was not found.
  `int` | `hashCode()` | Returns the hash code value for this Map.
  `boolean` | `isEmpty()` | Returns true if this Map contains no attributes.
  `Set<Object>` | `keySet()` | Returns a Set view of the attribute names (keys) contained in this Map.
  `Object` | `put​(Object name, Object value)` | Associates the specified value with the specified attribute name (key) in this Map.
  `void` | `putAll​(Map<?,​?> attr)` | Copies all of the attribute name-value mappings from the specified Attributes to this Map.
  `String` | `putValue​(String name, String value)` | Associates the specified value with the specified attribute name, specified as a String.
  `Object` | `remove​(Object name)` | Removes the attribute with the specified name (key) from this Map.
  `int` | `size()` | Returns the number of attributes in this Map.
  `Collection<Object>` | `values()` | Returns a Collection view of the attribute values contained in this Map.

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

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

  ### Methods declared in interface java.util.Map

  `compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll`

- ## Field Details

  - ### map

    protected Map<Object,​Object> map
    The attribute name-value mappings.

- ## Constructor Details

  - ### Attributes

    public Attributes()
    Constructs a new, empty Attributes object with default size.

  - ### Attributes

    public Attributes​(int size)
    Constructs a new, empty Attributes object with the specified initial size.
    Parameters:
      `size` - the initial number of attributes

  - ### Attributes

    public Attributes​(Attributes attr)
    Constructs a new Attributes object with the same attribute name-value mappings as in the specified Attributes.
    Parameters:
      `attr` - the specified Attributes

- ## Method Details

  - ### get

    public Object get​(Object name)
    Returns the value of the specified attribute name, or null if the attribute name was not found.
    Specified by:
      `get` in interface `Map<Object,​Object>`
    Parameters:
      `name` - the attribute name
    Returns:
      the value of the specified attribute name, or null if not found.

  - ### getValue

    public String getValue​(String name)
    Returns the value of the specified attribute name, specified as a string, or null if the attribute was not found. The attribute name is case-insensitive.

    This method is defined as:

              return (String)get(new Attributes.Name((String)name));

    Parameters:
      `name` - the attribute name as a string
    Returns:
      the String value of the specified attribute name, or null if not found.
    Throws:
      `IllegalArgumentException` - if the attribute name is invalid

  - ### getValue

    public String getValue​(Attributes.Name name)
    Returns the value of the specified Attributes.Name, or null if the attribute was not found.

    This method is defined as:

             return (String)get(name);

    Parameters:
      `name` - the Attributes.Name object
    Returns:
      the String value of the specified Attribute.Name, or null if not found.

  - ### put

    public Object put​(Object name, Object value)
    Associates the specified value with the specified attribute name (key) in this Map. If the Map previously contained a mapping for the attribute name, the old value is replaced.
    Specified by:
      `put` in interface `Map<Object,​Object>`
    Parameters:
      `name` - the attribute name
      `value` - the attribute value
    Returns:
      the previous value of the attribute, or null if none
    Throws:
      `ClassCastException` - if the name is not a Attributes.Name or the value is not a String

  - ### putValue

    public String putValue​(String name, String value)
    Associates the specified value with the specified attribute name, specified as a String. The attributes name is case-insensitive. If the Map previously contained a mapping for the attribute name, the old value is replaced.

    This method is defined as:

              return (String)put(new Attributes.Name(name), value);

    Parameters:
      `name` - the attribute name as a string
      `value` - the attribute value
    Returns:
      the previous value of the attribute, or null if none
    Throws:
      `IllegalArgumentException` - if the attribute name is invalid

  - ### remove

    public Object remove​(Object name)
    Removes the attribute with the specified name (key) from this Map. Returns the previous attribute value, or null if none.
    Specified by:
      `remove` in interface `Map<Object,​Object>`
    Parameters:
      `name` - attribute name
    Returns:
      the previous value of the attribute, or null if none

  - ### containsValue

    public boolean containsValue​(Object value)
    Returns true if this Map maps one or more attribute names (keys) to the specified value.
    Specified by:
      `containsValue` in interface `Map<Object,​Object>`
    Parameters:
      `value` - the attribute value
    Returns:
      true if this Map maps one or more attribute names to the specified value

  - ### containsKey

    public boolean containsKey​(Object name)
    Returns true if this Map contains the specified attribute name (key).
    Specified by:
      `containsKey` in interface `Map<Object,​Object>`
    Parameters:
      `name` - the attribute name
    Returns:
      true if this Map contains the specified attribute name

  - ### putAll

    public void putAll​(Map<?,​?> attr)
    Copies all of the attribute name-value mappings from the specified Attributes to this Map. Duplicate mappings will be replaced.
    Specified by:
      `putAll` in interface `Map<Object,​Object>`
    Parameters:
      `attr` - the Attributes to be stored in this map
    Throws:
      `ClassCastException` - if attr is not an Attributes

  - ### clear

    public void clear()
    Removes all attributes from this Map.
    Specified by:
      `clear` in interface `Map<Object,​Object>`

  - ### size

    public int size()
    Returns the number of attributes in this Map.
    Specified by:
      `size` in interface `Map<Object,​Object>`
    Returns:
      the number of key-value mappings in this map

  - ### isEmpty

    public boolean isEmpty()
    Returns true if this Map contains no attributes.
    Specified by:
      `isEmpty` in interface `Map<Object,​Object>`
    Returns:
      `true` if this map contains no key-value mappings

  - ### keySet

    public Set<Object> keySet()
    Returns a Set view of the attribute names (keys) contained in this Map.
    Specified by:
      `keySet` in interface `Map<Object,​Object>`
    Returns:
      a set view of the keys contained in this map

  - ### values

    public Collection<Object> values()
    Returns a Collection view of the attribute values contained in this Map.
    Specified by:
      `values` in interface `Map<Object,​Object>`
    Returns:
      a collection view of the values contained in this map

  - ### entrySet

    public Set<Map.Entry<Object,​Object>> entrySet()
    Returns a Collection view of the attribute name-value mappings contained in this Map.
    Specified by:
      `entrySet` in interface `Map<Object,​Object>`
    Returns:
      a set view of the mappings contained in this map

  - ### equals

    public boolean equals​(Object o)
    Compares the specified object to the underlying map for equality. Returns true if the given object is also a Map and the two maps represent the same mappings.
    Specified by:
      `equals` in interface `Map<Object,​Object>`
    Overrides:
      `equals` in class `Object`
    Parameters:
      `o` - the Object to be compared
    Returns:
      true if the specified Object is equal to this Map
    See Also:
      `Object.hashCode()`, `HashMap`

  - ### hashCode

    public int hashCode()
    Returns the hash code value for this Map.
    Specified by:
      `hashCode` in interface `Map<Object,​Object>`
    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 copy of the Attributes, implemented as follows:

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

    Since the attribute names and values are themselves immutable, the Attributes returned can be safely modified without affecting the original.
    Overrides:
      `clone` in class `Object`
    Returns:
      a clone of this instance.
    See Also:
      `Cloneable`