java.util.Properties
クラスは、キーと値が両方ともStringであるマップを表すことを意図しています。これは、Properties
オブジェクトがテキストファイルである.properties
ファイルを読み取るために使用されるためです。java.util.PropertiesがMap <Object、Object>を実装し、Map <String、String>を実装しない理由
Java 5では、なぜMap<Object,Object>
を実装し、Map<String,String>
ではなく、このクラスを実装したのですか?
javadoc状態:
プロパティのHashtableから継承するため、プットとのputAllメソッドは、Propertiesオブジェクトに適用することができます。キーや値が文字列でないエントリを呼び出し側が挿入できるため、これらの使用は強く推奨されません。代わりにsetPropertyメソッドを使用する必要があります。 StringまたはString以外のキーまたは値を含む「侵害された」Propertiesオブジェクトでstoreメソッドまたはsaveメソッドが呼び出された場合、呼び出しは失敗します。
キーと値はどちらもStringであるはずなので、適切なジェネリック型を使用して静的に強制するのはなぜですか?
Properties
implement Map<String,String>
は、pre-Java 5用に書かれたコードと完全に下位互換性がないと思われます。非文字列をPropertiesオブジェクトに貼り付ける古いコードがある場合、そのコードはJava 5でコンパイルされなくなります。しかし...それはいいことではない?コンパイル時にこのような型のエラーを捕まえるのは、ジェネリックの全体的なポイントではないのですか?
実際にマップx = new Properties()はいずれの方法でも動作します。その人々はproperties.put( "flag"、Boolean.TRUE)のようなものを置く。私は人々があらゆる種類のデータをPropertiesオブジェクトに入れたが、決して非文字列のキーではないことを見てきた。 ;) –
私は答えを更新しました。 –
ちょっと待ってください! Map