{"id":89,"date":"2007-07-23T10:50:00","date_gmt":"2007-07-23T10:50:00","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=89"},"modified":"2007-07-23T10:50:00","modified_gmt":"2007-07-23T10:50:00","slug":"sun-misc-unsafe-zur-objekterzeugung-ohne-standard-konstruktor","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2007\/07\/sun-misc-unsafe-zur-objekterzeugung-ohne-standard-konstruktor\/","title":{"rendered":"sun.misc.Unsafe zur Objekterzeugung ohne Standard-Konstruktor"},"content":{"rendered":"<p><strong>Inselupdate: <\/strong>Die Laufzeitumgebung von Sun liefert noch \u00fcber 3000 Klassendateien in den Paketen sun und sunw aus. Diese internen Klassen sind nicht offiziell dokumentiert<a href=\"#_ftn1\">[1]<\/a>, aber zum Teil sehr leistungsf\u00e4hig und erlauben selbst direkten Speicherzugriff oder k\u00f6nnen Objekte ohne Standard-Konstruktor erzeugen:<\/p>\n<p>com\/tutego\/insel\/sun\/UnsafeInstance.java, Ausschnitt<\/p>\n<pre><p>Field field = sun.misc.Unsafe.class.getDeclaredField( \"theUnsafe\" );<br \/><p>field.setAccessible( true );<br \/><p>sun.misc.Unsafe unsafe = (sun.misc.Unsafe) field.get( null );<br \/><p>File f = (File) unsafe.allocateInstance( File.class );<br \/><p>System.out.println( f.getPath() ); \/\/ null<br \/><\/p><\/pre>\n<p><\/p>\n<p>File hat keinen Standard-Konstruktor, noch nicht einmal einen privaten. Diese Art der Objekterzeugung kann bei der Deserialisierung (siehe dazu Kapitel 13) hilfreich sein. <\/p>\n<hr align=\"left\" width=\"33%\" size=\"1\">\n<p><a href=\"#_ftnref1\">[1]<\/a> Das Buch \u201cJava Secrets\u201c von Elliotte Rusty Harold geht den Klassen nach, ist aber schon \u00e4lter.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Inselupdate: Die Laufzeitumgebung von Sun liefert noch \u00fcber 3000 Klassendateien in den Paketen sun und sunw aus. Diese internen Klassen sind nicht offiziell dokumentiert[1], aber zum Teil sehr leistungsf\u00e4hig und erlauben selbst direkten Speicherzugriff oder k\u00f6nnen Objekte ohne Standard-Konstruktor erzeugen: com\/tutego\/insel\/sun\/UnsafeInstance.java, Ausschnitt Field field = sun.misc.Unsafe.class.getDeclaredField( &#8222;theUnsafe&#8220; );field.setAccessible( true );sun.misc.Unsafe unsafe = (sun.misc.Unsafe) field.get( null [&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-89","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\/89","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=89"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/89\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=89"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=89"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=89"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}