Pergunta

Em Java, um array é um objeto. A minha pergunta é ... é um construtor de objeto chamado quando novas matrizes está sendo criado? Gostaríamos de usar este fato para o construtor instrumento objeto com alguma bytecode extra que verifica o comprimento da matriz que está sendo construído. Será que isso funciona?

Foi útil?

Solução

No que respeita à especificação da linguagem Java está em causa, embora ambos uso a palavra-chave new, Class Criação de Instância Expressões e array Criação Expressões são diferentes formas de expressão, cada uma com suas próprias regras. A descrição da matriz Criação Expressões não menciona chamar um construtor.

Outras dicas

Por JVM especificação : "matrizes são criados e manipulados utilizando um conjunto distinto de instruções." Assim, enquanto as matrizes são instâncias de objetos, eles não são inicializados da mesma forma que outros objetos são (que você pode ver se você rolar para cima a partir desse link âncora).

Eu não penso assim, porque você não pode derivar uma matriz nativa da overridethe construtor

Você pode usar byte manipulação código para colocar a verificação de onde quer que uma nova matriz é criado.

Não. Eu encontrei este na lista de discussão AspectJ: http: //dev.eclipse .org / mhonarc / listas / aspectj usuários / msg02975.html .

Você provavelmente perguntar sobre matrizes por um motivo, mas se você puder, por que não mudar para as classes de coleção. Isso lhe dará muitas oportunidades para interceptar e fazer validações.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top