Ich versuche zu verstehen, warum java.util.Properties auf diese Weise implementiert wurde. Es hat zwei Schnittstellen: getProperty/setProperty, die nur Zeichenfolgen akzeptiert, und put/get, die jedes Objekt als Wert akzeptiert. Diese beiden Schnittstellen scheinen sich zu überlappen, sodass eine mit put() hinzugefügte Zeichenfolge mit getProperty() abgerufen werden kann.Setzen von Objekten in java.util.Properties
Es scheint einige Probleme mit dieser seltsamen hybriden Schnittstelle zu geben. Das Setzen eines Objekts, das eine Zeichenfolgeneigenschaft überschreibt, hat den Nebeneffekt, dass der Zeichenfolgenwert gelöscht wird, wodurch null als getProperty-Ergebnis erzeugt wird. Das Hinzufügen einer Ganzzahl oder eines anderen Werts, der eine einfache Zeichenfolgenübersetzung enthält, wird möglicherweise als echter Eigenschaftswert missverstanden (aber als Eigenschaft ist es immer null).
Meine Frage ist: Gibt es einen wirklichen, praktischen Grund dafür? Oder ist es eine halbfertige Implementierung, wie ich vermute?
Ich kann es nicht sichern, aber ich würde stark vermuten, dass das Problem Rückwärtskompatibilität ist. 'Properties' erweitert' Hashtable', was eine alte Klasse von vor Generics ist; das heißt, wenn Sie eine 'Eigenschaft' hätten, könnten Sie' property.put (was auch immer, was auch immerElse) 'hineingerufen haben. Als Generika kamen, wollten die Java-Leute den Code rückwärtskompatibel halten, was bedeutete, dass er 'Hashtable
'Properties' ist eine Unterklasse von' Hashtable', mit keiner Übersteuerung von 'get' /' put', daher das Verhalten. 'getProperty' /' setProperty' sind getippte Versionen von 'get' /' put'. Es ist eine Frage der Geschichte und nicht des Versteckens. –