Die Klasse "Properies" in Java SE 6 hat eine Methode namens " setProperty(String key, String value)
", die ein Object
zurückgibt. Außerdem wurde der vorherige Object
für diesen Schlüssel gespeichert, oder NULL
, falls keiner existiert.
Da setProperty(String key, String value)
nur einen String
als Wert annehmen kann, gibt diese Methode nicht String
?
Leider wurde die Klasse java.util.Properties
in Java 1.0 eingeführt, viele Jahre vor Generika. Properties
erweitert Hashtable
, die alle Arten von Daten speichern können. So können Sie Folgendes tun:
In diesem Beispiel muss setProperty
den vorherigen Wert zurückgeben, der in diesem Eintrag gespeichert wurde, d. h. Object
. Aber es ist nicht String
! Um ClassCastException
zu vermeiden, mussten die JDK-Ersteller setProperty()
als Methode definieren, die Object
zurückgibt.
BTW selbst jetzt Klasse Eigenschaften implementiert Map<Object, Object>
anstelle von Map<String, String>
für die Abwärtskompatibilität.
Weil Eigenschaften von Anfang an falsch waren, indem Hashtable erweitert wurde, was alles speichern kann. Das Design respektierte daher nicht das Liskov-Substitutionsprinzip: Alles, was eine Basisklasse kann, muss eine Unterklasse tun können.
Da Eigenschaften die Hashtabelle erweitern, können Sie tatsächlich jede Art von Objekt darin speichern.
Tags und Links java