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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top