{"id":3462,"date":"2016-11-02T12:36:00","date_gmt":"2016-11-02T10:36:00","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=3462"},"modified":"2016-12-12T11:33:28","modified_gmt":"2016-12-12T09:33:28","slug":"initialisierung-von-klassenvariablen","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2016\/11\/initialisierung-von-klassenvariablen\/","title":{"rendered":"Initialisierung von Klassenvariablen"},"content":{"rendered":"<p>Wo werden eigentlich Klassenvariablen initialisiert? Im Konstruktor ergibt dies keinen Sinn, da f\u00fcr Klassenvariablen keine Objekte angelegt werden m\u00fcssen. Daf\u00fcr gibt es den static{}-Block. Dieser wird immer dann ausgef\u00fchrt, wenn der Klassenlader eine Klasse in die Laufzeitumgebung geladen hat. F\u00fcr eine statische Initialisierung wird also wieder der Compiler etwas einf\u00fcgen:<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"408\">Was wir schreiben<\/td>\n<td width=\"425\">Was der Compiler generiert<\/td>\n<\/tr>\n<tr>\n<td width=\"408\">class\u00a0Beer\u00a0{<br \/>\nstatic\u00a0String\u00a0isFreeFor\u00a0=\u00a0&#8222;Homer&#8220;;<br \/>\n}<\/td>\n<td width=\"425\">class\u00a0Beer\u00a0{<br \/>\nstatic\u00a0String isFreeFor;<br \/>\nstatic\u00a0{<br \/>\nisFreeFor\u00a0=\u00a0&#8222;Homer&#8220;;<br \/>\n}<br \/>\n}<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Klassenintialisierer sind nicht ganz ungef\u00e4hrlich, denn wenn der Code eine Ausnahme ausl\u00f6st, dann gibt es einen harten lang.ExceptionInInitializerError. Leser k\u00f6nnen das testen, in dem ge\u00e4ndert wird:<\/p>\n<p>static\u00a0String\u00a0isFreeFor =\u00a0&#8222;Homer&#8220;.substring( -1 );<\/p>\n<p>und dann aus dem Hauptprogramm aufrufen:<\/p>\n<p>out.println( Beer.isFreeFor );<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wo werden eigentlich Klassenvariablen initialisiert? Im Konstruktor ergibt dies keinen Sinn, da f\u00fcr Klassenvariablen keine Objekte angelegt werden m\u00fcssen. Daf\u00fcr gibt es den static{}-Block. Dieser wird immer dann ausgef\u00fchrt, wenn der Klassenlader eine Klasse in die Laufzeitumgebung geladen hat. F\u00fcr eine statische Initialisierung wird also wieder der Compiler etwas einf\u00fcgen: Was wir schreiben Was der [&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":[1],"tags":[],"class_list":["post-3462","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/3462","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=3462"}],"version-history":[{"count":4,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/3462\/revisions"}],"predecessor-version":[{"id":3577,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/3462\/revisions\/3577"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=3462"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=3462"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=3462"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}