Java 印刷サービス API では、属性カテゴリは Attribute インタフェースを実装する Java クラスで表され、属性値はこのようなクラスまたはそのいずれかのサブクラスのインスタンスです。たとえば、特定のジョブを 5 部印刷する場合は、アプリケーション上で Copies クラスのインスタンスを作成するときに値を 5 に設定し、この Copies インスタンスを使用して印刷ジョブを指定します。Copies クラスは属性カテゴリを表現し、Copies インスタンスは属性値を表現します。属性値は、Java オブジェクトとしてカプセル化されます。属性値は、属性カテゴリを暗黙的に示すため、通常は属性と呼ばれます。カテゴリと値は、キーと値のペアで構成されます。キーと値のペアは、ほかの属性とともに属性セットに追加できます。詳細は、「属性セット」を参照してください。
Attribute インタフェースは、getName と getCategory の 2 つのメソッドのみを定義します。getName メソッドは、属性カテゴリの String 名を返します。getCategory メソッドは、そのカテゴリを最初に実装するクラスを返します。特定のカテゴリのすべての実装が同じ名前とクラスを返すようにするために、サブクラスが getName または getCategory メソッドをオーバーライドしないようにしてください。
プリンタでサポートされている属性カテゴリと値を判定するには、PrintService インタフェースで定義されている照会メソッドを使用します。印刷要求では、対象のプリンタでサポートされているすべての属性カテゴリの属性値を指定する必要はありません。サポートされる各属性カテゴリには、デフォルト値が設定されています。たとえば、特定のプリンタの最大印刷部数が 999 部であるとします。印刷要求に部数を指定しなかった場合は、デフォルトの 1 部だけが印刷されます。