Ist Object-Konstruktor aufgerufen, wenn ein Array in Java zu erstellen?
-
19-08-2019 - |
Frage
In Java ist ein Array ein Objekt. Meine Frage ist ... ist ein Object-Konstruktor aufgerufen, wenn neue Arrays erstellt wird? Wir möchten uns an dieser Tatsache Instrument Object-Konstruktor mit einigen zusätzlichen Bytecode verwenden, die Länge des Arrays prüft gebaut. Würde das funktionieren?
Lösung
Was die Java Language Specification betrifft, obwohl beide das new
Stichwort, Klasse Instanz Creation Expressions und Array Creation Expressions verschiedene Ausdrucksformen sind, jeder mit seinen eigenen Regeln. Die Beschreibung der Array-Erstellung Ausdrücke erwähnt nicht einen Konstruktor aufgerufen wird.
Andere Tipps
Per die JVM spec : „Arrays erstellt und mit einem unterschiedlichen Satz von Befehlen manipuliert werden kann.“ Während also Arrays Instanzen von Objekten sind, werden sie auf die gleiche Weise nicht initialisiert, dass andere Objekte (die Sie sehen können, wenn Sie von diesem Link Anker nach oben).
Ich glaube nicht, weil Sie nicht über eine native Array overridethe Konstruktor ableiten
Sie können Byte-Code-Manipulation verwenden, um die Überprüfung zu setzen, wo immer ein neues Array erstellt wird.
Nein. Ich fand dies auf der AspectJ-Mailingliste: http: //dev.eclipse .org / mhonarc / lists / aspectj-users / msg02975.html .
Sie haben wahrscheinlich über Arrays aus einem Grund fragen, aber wenn Sie können, warum nicht auf die Sammlung Klassen wechseln. Das wird Ihnen viel Gelegenheit geben, abzufangen und tun Validierungen.