Question

En Java, un tableau IS AN Object. Ma question est la suivante: un constructeur Object est-il appelé lors de la création de nouveaux tableaux? Nous aimerions utiliser ce fait pour instrumenter le constructeur Object avec un bytecode supplémentaire qui vérifie la longueur du tableau en cours de construction. Cela fonctionnerait-il?

Était-ce utile?

La solution

En ce qui concerne la spécification du langage Java, bien que les deux utilisent le mot-clé new , Expressions de création d'instances de classes et Les expressions de création de tableaux sont différentes formes d'expression, chacune avec ses propres règles. La description de Array Creation Expressions ne mentionne pas l’appel d’un constructeur.

Autres conseils

Selon les spécifications JVM : "Les tableaux sont créés et manipulés à l'aide d'un ensemble d'instructions distinct". Ainsi, bien que les tableaux soient des instances d'objets, ils ne sont pas initialisés de la même manière que les autres objets (ce que vous pouvez voir si vous faites défiler depuis cette ancre de lien).

Je ne pense pas car vous ne pouvez pas dériver un tableau natif pour remplacer le constructeur

Vous pouvez utiliser la manipulation de code octet pour placer la vérification à chaque fois qu'un nouveau tableau est créé.

Non. J'ai trouvé ceci sur la liste de diffusion AspectJ: http: //dev.eclipse .org / mhonarc / lists / aspectj-users / msg02975.html .

Vous avez probablement des questions sur les tableaux, mais si vous le pouvez, pourquoi ne pas basculer vers les classes de collection. Cela vous donnera de nombreuses possibilités d’interception et de validation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top