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