{"id":4096,"date":"2018-03-03T14:14:04","date_gmt":"2018-03-03T12:14:04","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=4096"},"modified":"2018-03-04T19:03:54","modified_gmt":"2018-03-04T17:03:54","slug":"warum-properties-extends-hashtable-und-nicht-hashtable","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2018\/03\/warum-properties-extends-hashtable-und-nicht-hashtable\/","title":{"rendered":"Warum Properties extends Hashtable&lt;Object, Object> und nicht Hashtable&lt;String, String>?"},"content":{"rendered":"<p>Von der Intuition her ist von der Vererbung class Properties extends Hashtable&lt;String, String&gt; naheliegend, doch hat Sun nicht gewollt. Der Grund hat gar nicht so sehr mit Properties selbst zu tun, sondern mit der Basisklasse Hashtable und gew\u00e4hlten Umsetzung der Generics und der gew\u00fcnschten Kompatibilit\u00e4t. Von Java 1.0 bis Java 1.4 hat die Klasse Hashtable eine Methode put(Object, Object). Ab Java 5 wird Object durch generische Typparameter ersetzt, sodass es in Hashtable hei\u00dft: put(K, V). Wenn nun Properties extends Hashtable&lt;String,String&gt; ist, dann wird die Hinzuf\u00fcgemethode zu put(String, Sting). Das w\u00e4re nicht mehr kompatibel zu put(Object, Object) vor Java 5. Also haben die Sun-Entwickler Properties extends Hashtable&lt;Object, Object&gt; geschrieben, auch wenn die put(\u2026)-Methode \u00fcberhaupt nicht verwendet werden soll, sondern setProperty(\u2026). Da Generics nur ein \u201eTrick\u201c des Compilers sind, l\u00e4sst sich \u00fcber den Raw-Typ tricksen:<\/p>\n<pre>Properties props = new Properties();\r\n\r\n@SuppressWarnings( {\"rawtypes\", \"unchecked\"} )\r\n\r\nMap&lt;String, String&gt; map = (Map) props;<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Von der Intuition her ist von der Vererbung class Properties extends Hashtable&lt;String, String&gt; naheliegend, doch hat Sun nicht gewollt. Der Grund hat gar nicht so sehr mit Properties selbst zu tun, sondern mit der Basisklasse Hashtable und gew\u00e4hlten Umsetzung der Generics und der gew\u00fcnschten Kompatibilit\u00e4t. Von Java 1.0 bis Java 1.4 hat die Klasse Hashtable [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[11],"tags":[],"class_list":["post-4096","post","type-post","status-publish","format-standard","hentry","category-insel"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/4096","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=4096"}],"version-history":[{"count":2,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/4096\/revisions"}],"predecessor-version":[{"id":4099,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/4096\/revisions\/4099"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=4096"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=4096"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=4096"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}