AttributeSet インタフェースは、java.util.Map インタフェースと似ています。つまり、値およびキーの対応関係を指定し、各キーは一意で、1 つの値しか指定できません。ただし、AttributeSet インタフェースは、Java 印刷サービス API の要件に対応するためのインタフェースです。AttributeSet の要件は次のとおりです。
Java 印刷サービス API には、AttributeSet インタフェースの固定実装として HashAttributeSet が組み込まれていますが、開発者が独自の実装を組み込むこともできます。多くのアプリケーションでは、HashAttributeSet を直接使用せずに、HashAttributeSet のサブクラス (HashPrintRequestAttributeSet、HashPrintJobAttributeSet、HashDocumentAttributeSet、および HashPrintServiceAttributeSet) のいずれかを使用します。これらのサブクラスには、AttributeSet の対応するサブインタフェースが実装されます。たとえば、PrintRequestAttributeSet は AttributeSet を継承し、PrintRequestAttributeSet の固定実装は HashPrintRequestAttributeSet になります。属性セットを作成するときに、HashPrintRequestAttributeSet、または PrintRequestAttributeSet の任意の実装を使用したときは、要求属性だけを含めることができます。
そのサブクラスとは異なり、HashAttributeSet には任意の種類の属性を含めることができます。複数の種類の属性を属性セットに含めるときは、HashAttributeSet をアプリケーションから直接使用します。たとえば、PrintService の getUnsupportedAttributes メソッドから返される属性セットを挙げることができます。サポートされない属性が返されたときに、その属性は複数の属性機能に属している可能性があります。
印刷要求の指定は印刷アプリケーションの主要な機能であるため、単一の属性と同様に、多くのアプリケーションは要求属性セットを作成します。要求属性セットを作成するときは、HashPrintRequestAttributeSet クラスのいずれかのコンストラクタを使用します。
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();次のセクションでは、属性セットに追加できる属性のうち、使用頻度の高いものについて説明します。