Attributes (Java SE 17 & JDK 17)
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`