Según entiendo que ..
es 0-Many
args y *
es un arg de any
nombre. ¿Es esto correcto?Qué significan ... y * en aspectj
¿Tiene la sintaxis de soporte aspectj como args(..,myArg,..)
?
Según entiendo que ..
es 0-Many
args y *
es un arg de any
nombre. ¿Es esto correcto?Qué significan ... y * en aspectj
¿Tiene la sintaxis de soporte aspectj como args(..,myArg,..)
?
Esto es de AspectJ sitio: http://www.eclipse.org/aspectj/doc/next/progguide/semantics-pointcuts.html
*
representa cualquier número de caracteres, excepto ""
..
representa cualquier número de caracteres, incluyendo cualquier número de "."
actualización De AspectJ en acción - para firmas de método:
En firmas de método, el comodín .. se utiliza para denotar cualquier tipo y número de argumentos tomados por un método
*
especifica un único argumento
pero también esto: "Si es el comodín" * ", entonces cualquier argumento coincidirá, y si es el comodín especial" .. ", entonces cualquier número de argumentos coincidirá con" – MikePatel
Sí, tienes razón, tengo actualizado la respuesta en consecuencia para las firmas de método también. AspectJ no es compatible con '(.., myarg, ..)', aunque no estoy seguro de por qué. –
Otros han respondido a una parte de la pregunta que tengo ante mí, por lo que solo modificaré:
.., bla, ..
no funciona porque si enlaza el parámetro bla
a una variable, puede haber varias combinaciones coincidentes en caso de que se produzca un tipo coincidente varias veces en la lista de parámetros. Ejemplo:
void foo(int a, String b, String c, File d)
Ahora lo que debería ocurrir si el consejo es:
before(String bla) : call(void foo(.., bla, ..)) && args(bla)
caso bla
quedar vinculados al valor de String
b
o c
?
var-arg solo puede ser el último argumento (al final) en Java. – Shark
Sería muy difícil/imposible para el compilador/intérprete saber qué argumento pasó realmente 'myArg' en su caso. – climbage