JobStateReasons (Java Platform SE 8 )
Keywords: javax.print.attribute.standard.JobStateReasons class
Date: 2026-06-25

javax.print.attribute.standard

## Class JobStateReasons

- java.lang.Object
- - java.util.AbstractCollection<E>
  - - java.util.AbstractSet<E>
    - - java.util.HashSet<JobStateReason>
      - - javax.print.attribute.standard.JobStateReasons

- All Implemented Interfaces:
    Serializable, Cloneable, Iterable<JobStateReason>, Collection<JobStateReason>, Set<JobStateReason>, Attribute, PrintJobAttribute

      public final class JobStateReasons
      extends HashSet<JobStateReason>
      implements PrintJobAttribute

  Class JobStateReasons is a printing attribute class, a set of enumeration values, that provides additional information about the job's current state, i.e., information that augments the value of the job's `JobState` attribute.

  Instances of `JobStateReason` do not appear in a Print Job's attribute set directly. Rather, a JobStateReasons attribute appears in the Print Job's attribute set. The JobStateReasons attribute contains zero, one, or more than one `JobStateReason` objects which pertain to the Print Job's status. The printer adds a `JobStateReason` object to the Print Job's JobStateReasons attribute when the corresponding condition becomes true of the Print Job, and the printer removes the `JobStateReason` object again when the corresponding condition becomes false, regardless of whether the Print Job's overall `JobState` also changed.

  Class JobStateReasons inherits its implementation from class `java.util.HashSet`. Unlike most printing attributes which are immutable once constructed, class JobStateReasons is designed to be mutable; you can add `JobStateReason` objects to an existing JobStateReasons object and remove them again. However, like class `java.util.HashSet`, class JobStateReasons is not multiple thread safe. If a JobStateReasons object will be used by multiple threads, be sure to synchronize its operations (e.g., using a synchronized set view obtained from class `java.util.Collections`).

  IPP Compatibility: The string value returned by each individual `JobStateReason` object's `toString()` method gives the IPP keyword value. The category name returned by `getName()` gives the IPP attribute name.

  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `JobStateReasons()` Construct a new, empty job state reasons attribute; the underlying hash set has the default initial capacity and load factor.
    `JobStateReasons(Collection<JobStateReason> collection)` Construct a new job state reasons attribute that contains the same `JobStateReason` objects as the given collection.
    `JobStateReasons(int initialCapacity)` Construct a new, empty job state reasons attribute; the underlying hash set has the given initial capacity and the default load factor.
    `JobStateReasons(int initialCapacity, float loadFactor)` Construct a new, empty job state reasons attribute; the underlying hash set has the given initial capacity and load factor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `add(JobStateReason o)` Adds the specified element to this job state reasons attribute if it is not already present.
    `Class<? extends Attribute>` | `getCategory()` Get the printing attribute class which is to be used as the "category" for this printing attribute value.
    `String` | `getName()` Get the name of the category of which this attribute value is an instance.

    - ### Methods inherited from class java.util.HashSet

      `clear, clone, contains, isEmpty, iterator, remove, size, spliterator`

    - ### Methods inherited from class java.util.AbstractSet

      `equals, hashCode, removeAll`

    - ### Methods inherited from class java.util.AbstractCollection

      `addAll, containsAll, retainAll, toArray, toArray, toString`

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

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

    - ### Methods inherited from interface java.util.Set

      `addAll, containsAll, equals, hashCode, removeAll, retainAll, toArray, toArray`

    - ### Methods inherited from interface java.util.Collection

      `parallelStream, removeIf, stream`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach`

- - ### Constructor Detail

    - #### JobStateReasons

          public JobStateReasons()

      Construct a new, empty job state reasons attribute; the underlying hash set has the default initial capacity and load factor.

    - #### JobStateReasons

          public JobStateReasons(int initialCapacity)

      Construct a new, empty job state reasons attribute; the underlying hash set has the given initial capacity and the default load factor.
      Parameters:
        `initialCapacity` - Initial capacity.
      Throws:
        `IllegalArgumentException` - if the initial capacity is less than zero.

    - #### JobStateReasons

          public JobStateReasons(int initialCapacity,
                                 float loadFactor)

      Construct a new, empty job state reasons attribute; the underlying hash set has the given initial capacity and load factor.
      Parameters:
        `initialCapacity` - Initial capacity.
        `loadFactor` - Load factor.
      Throws:
        `IllegalArgumentException` - if the initial capacity is less than zero.

    - #### JobStateReasons

          public JobStateReasons(Collection<JobStateReason> collection)

      Construct a new job state reasons attribute that contains the same `JobStateReason` objects as the given collection. The underlying hash set's initial capacity and load factor are as specified in the superclass constructor `HashSet(Collection)`.
      Parameters:
        `collection` - Collection to copy.
      Throws:
        `NullPointerException` - (unchecked exception) Thrown if `collection` is null or if any element in `collection` is null.
        `ClassCastException` - (unchecked exception) Thrown if any element in `collection` is not an instance of class `JobStateReason`.

  - ### Method Detail

    - #### add

          public boolean add(JobStateReason o)

      Adds the specified element to this job state reasons attribute if it is not already present. The element to be added must be an instance of class `JobStateReason`. If this job state reasons attribute already contains the specified element, the call leaves this job state reasons attribute unchanged and returns `false`.
      Specified by:
        `add` in interface `Collection<JobStateReason>`
      Specified by:
        `add` in interface `Set<JobStateReason>`
      Overrides:
        `add` in class `HashSet<JobStateReason>`
      Parameters:
        `o` - Element to be added to this job state reasons attribute.
      Returns:
        `true` if this job state reasons attribute did not already contain the specified element.
      Throws:
        `NullPointerException` - (unchecked exception) Thrown if the specified element is null.
        `ClassCastException` - (unchecked exception) Thrown if the specified element is not an instance of class `JobStateReason`.
      Since:
        1.5

    - #### getCategory

          public final Class<? extends Attribute> getCategory()

      Get the printing attribute class which is to be used as the "category" for this printing attribute value.

      For class JobStateReasons, the category is class JobStateReasons itself.

      Specified by:
        `getCategory` in interface `Attribute`
      Returns:
        Printing attribute class (category), an instance of class `java.lang.Class`.

    - #### getName

          public final String getName()

      Get the name of the category of which this attribute value is an instance.

      For class JobStateReasons, the category name is `"job-state-reasons"`.

      Specified by:
        `getName` in interface `Attribute`
      Returns:
        Attribute category name.

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.