それは「ただの」ものではHashMapないからです。javadocに記載されているように、次の特定の機能を備えたカスタマイズされたマップです。
返される実装は、標準およびオプションのすべての Map メソッドをサポートし、さらに次の追加要件をサポートする必要があります。
- 実装では、インターフェイス
Mapを実装する必要がありjava.io.Serializableます。
nullキーまたは値を追加しようとすると、 NullPointerException.
- ではないキーを追加しようとすると、
String必ずClassCastException.
- キーとして指定された属性名が this
UIComponentの実装クラスのプロパティと一致する場合、次のメソッドは特別な動作をします:
containsKey- 返品false。
get()- プロパティが読み取り可能な場合は、getter メソッドを呼び出して、返された値を返します (対応するラッパー クラスでプリミティブ値をラップします)。それ以外の場合はスローしIllegalArgumentExceptionます。
put()- プロパティが書き込み可能な場合は、setter メソッドを呼び出して、対応する値を設定します (対応するラッパー クラスでプリミティブ値をアンラップします)。プロパティが書き込み可能でない場合、またはプリミティブ型のプロパティを に設定しようとした場合はnull、 をスローしIllegalArgumentExceptionます。
remove- 投げIllegalArgumentExceptionます。
特にget()は特別です。マップキーに関連付けられた値を「単に」返すのではなく、実際には現在のコンポーネントで getter メソッドを呼び出します (たとえばcomponent.getFoo()、component.getAttributes().get("foo")が要求された場合)。これらのゲッター メソッドは通常、StateHelper.
setAttributes()をオーバーライドすると、このコントラクトが破られ、JSF コンポーネント ツリー全体が機能しなくなる可能性があります。