Domanda

In Java, un array È un oggetto. La mia domanda è ... viene chiamato un costruttore di oggetti quando vengono creati nuovi array? Vorremmo usare questo fatto per strumentare il costruttore di oggetti con qualche bytecode extra che controlla la lunghezza dell'array in costruzione. Funzionerebbe?

È stato utile?

Soluzione

Per quanto riguarda le specifiche del linguaggio Java, sebbene entrambi utilizzino la parola chiave new , Espressioni di creazione di istanze di classe e Espressioni di creazione di array sono diverse forme di espressione, ognuna con le proprie regole. La descrizione di Array Creation Expressions non menziona la chiamata a un costruttore.

Altri suggerimenti

Secondo le Specifiche JVM : " Le matrici vengono create e manipolate utilizzando un set distinto di istruzioni. " Pertanto, mentre le matrici sono istanze di Oggetti, non sono inizializzate allo stesso modo di altri oggetti (che è possibile vedere se si scorre verso l'alto dall'ancoraggio del collegamento).

Non credo perché non è possibile derivare un array nativo per sovrascrivere il costruttore

È possibile utilizzare la manipolazione del codice byte per posizionare il segno di spunta ovunque venga creato un nuovo array.

No. L'ho trovato nella mailing list di AspectJ: http: //dev.eclipse .org / mhonarc / lists / aspectj utenti / msg02975.html .

Probabilmente chiedi informazioni sugli array per un motivo, ma se puoi, perché non passare alle classi di raccolta. Ciò ti darà molte opportunità di intercettare e fare validazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top