AttributeSet
インタフェースで表します。
AttributeSet
インタフェースは、java.util.Map
インタフェースに似ています: キーと値のマップを提供します。各キーは一意であり、複数の値を含めることはできません。 ただし、AttributeSet
インタフェースは、Java Print Service APIの要件に対応するためのインタフェースです。 AttributeSet
の要件は次のとおりです。
AttributeSet
のEachキーはカテゴリに対応しており、キーの値は、キーで表されるカテゴリに属する属性値の1つのみです。 したがって、Map
とは異なり、AttributeSet
はキーの可能な値を制限: 属性カテゴリは、そのカテゴリに属していない属性値に設定できません。 Attribute
インタフェースを実装するOnly属性を属性セットに追加できます。AttributeSet
に存在できます。 たとえば、属性セットにすでにMedia
属性が含まれている場合、別のMedia
属性を追加すると、最初の属性が上書きされます。 Likeは単一の属性で、属性セットにはロールがあります。 ロールは、AttributeSet
サブインタフェースによって定義されます。このサブインタフェースは、「属性ロール」セクションに記載されているAttribute
サブインタフェースをパラレル化します。 AttributeSet
サブインタフェースは次のとおりです: PrintRequestAttributeSet
, PrintJobAttributeSet
, DocAttributeSet
およびPrintServiceAttributeSet
。 属性セットの役割によって、構成される属性の種類が決まります。たとえば、印刷要求の属性セットを、印刷要求の属性だけで構成できます。
The Java Print Service APIには、AttributeSet
インタフェースの具体的な実装としてHashAttributeSet
が含まれていますが、開発者は独自の実装を提供できます。 HashAttributeSet
を直接使用するのではなく、アプリケーションはHashAttributeSet
のサブクラスの1つを使用: HashPrintRequestAttributeSet
, HashPrintJobAttributeSet
, HashDocumentAttributeSet
およびHashPrintServiceAttributeSet
。 これらのサブクラスは、対応するAttributeSet
サブインタフェースを実装します。 たとえば、PrintRequestAttributeSet
はAttributeSet
を拡張し、HashPrintRequestAttributeSet
はPrintRequestAttributeSet
の具体的な実装です。 HashPrintRequestAttributeSet
またはPrintRequestAttributeSet
の実装で作成された属性セットには、リクエスト属性のみを含めることができます。
サブクラスとは異なり、HashAttributeSet
には任意の種類の属性を含めることができます。 アプリケーションは、複数の種類の属性を含むセットが必要な場合に、HashAttributeSet
を直接使用します。 1つの例は、PrintService
のgetUnsupportedAttributes
メソッドによって返されるセットです。 サポートされない属性が返されたときに、その属性は複数の属性機能に属している可能性があります。
印刷要求の指定は印刷アプリケーションの主要な機能であるため、単一の属性と同様に、多くのアプリケーションは要求属性セットを作成します。 リクエスト属性セットを作成するには、HashPrintRequestAttributeSet
クラスのコンストラクタの1つを使用します:
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();次の項では、セットに追加できる、より一般的に使用される属性の一部について説明します。