{"id":1858,"date":"2013-04-14T19:11:51","date_gmt":"2013-04-14T17:11:51","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=1858"},"modified":"2013-04-14T19:11:51","modified_gmt":"2013-04-14T17:11:51","slug":"assertions-mssen-nebeneffekt-frei-sein","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2013\/04\/assertions-mssen-nebeneffekt-frei-sein\/","title":{"rendered":"Assertions m&uuml;ssen Nebeneffekt frei sein"},"content":{"rendered":"<p>Assertions stehen immer in der Klassendatei, da sie der Compiler immer in Bytecode abbildet. Die JVM ignoriert Assertions standardm\u00e4\u00dfig bei der Ausf\u00fchrung und eine Aktivierung erfolgt nur auf Befehl; ein Ablauf ohne Bedingungstests ist also der Normalfall. Daraus folgt, dass Ausdr\u00fccke in den assert-Anweisungen ohne Nebeneffekte sein m\u00fcssen. So etwas wie <\/p>\n<p>assert counter&#8211; == 0;<\/p>\n<p>ist keine gute Idee, denn das Vermindern der Variablen ist ein Nebeneffekt, der nur dann stattfindet, wenn die JVM auch Assertions aktiviert hat. Allerdings l\u00e4sst sich das auch f\u00fcr einen Trick nutzen, Assertions bei der Ausf\u00fchrung zu erzwingen. Im statischen Initialisierer einer Klasse k\u00f6nnen wir setzen:<\/p>\n<p>boolean assertEnabled = false;<\/p>\n<p>assert assertEnabled = true;<\/p>\n<p>if ( ! assertEnabled )<\/p>\n<p>&#160; throw new RuntimeException( &quot;Assertions m\u00fcssen aktiviert werden&quot; );<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Assertions stehen immer in der Klassendatei, da sie der Compiler immer in Bytecode abbildet. Die JVM ignoriert Assertions standardm\u00e4\u00dfig bei der Ausf\u00fchrung und eine Aktivierung erfolgt nur auf Befehl; ein Ablauf ohne Bedingungstests ist also der Normalfall. Daraus folgt, dass Ausdr\u00fccke in den assert-Anweisungen ohne Nebeneffekte sein m\u00fcssen. So etwas wie assert counter&#8211; == 0; [&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-1858","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\/1858","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=1858"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1858\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=1858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=1858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=1858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}