Javaプロパティのドキュメントは、putメソッドとputAllメソッドの使用を強く推奨していません。私はちょうどプロパティクラスのソースコードを見て、私は少しHashtableのパラメータ化された型が文字列ではなくオブジェクトに設定されて参照してください少し驚いています。下位互換性とは別の理由がありますか?Javaプロパティの修正
if(p1 instanceof String && p2 instanceof String) {
return super.put(p1, p2);
}else {
throw new IllegalArgumentException("Invalid argument type");
}
おかげで、
Abidi:また、プロパティは、クラスのように、大体、余分な前提条件(私はそれがLKPの違反だ知っているが、ハッシュテーブルはとにかく悪い選択した拡張)と置くとのputAllメソッドをオーバーライドすることはできません
'Properties'は10年前のジェネリックに先行する古いクラスであり、今では廃止予定のHashtableを継承するように設計されています。通常は 'ResourceBundle'を使って.propertiesファイルを解析し、実行時に値を更新する必要があるときに' Map 'を明示的に設定する方がよいでしょう。 –
millimoose
型パラメータStringを作成できなかったのは、実際にプロパティを使用してString以外のオブジェクトを格納するアプリケーションが破損するためです。これはクラスの誤った使用になりますが、JDKの方針は古いコードをコンパイルしないようにすることです。 – millimoose