Sự hiểu biết của tôi là ..
là 0-Many
args và *
là một arg của tên any
. Điều này có đúng không?Làm gì .. và * có nghĩa là ở khía cạnh
Cú pháp hỗ trợ aspectj như args(..,myArg,..)
?
Sự hiểu biết của tôi là ..
là 0-Many
args và *
là một arg của tên any
. Điều này có đúng không?Làm gì .. và * có nghĩa là ở khía cạnh
Cú pháp hỗ trợ aspectj như args(..,myArg,..)
?
Đây là từ AspectJ trang web: http://www.eclipse.org/aspectj/doc/next/progguide/semantics-pointcuts.html
*
đại diện cho bất kỳ số lượng nhân vật ngoại trừ ""
..
đại diện cho bất kỳ số lượng ký tự nào bao gồm bất kỳ số nào "."
Cập nhật Từ AspectJ trong Hành động - cho phương pháp chữ ký:
Trong chữ ký phương pháp, các ký tự đại diện .. được sử dụng để biểu thị bất kỳ loại và số lượng đối số được thực hiện bởi một phương pháp
*
chỉ định một đối số duy nhất
nhưng cũng có điều này: "Nếu đó là ký tự đại diện" * ", thì bất kỳ đối số nào sẽ khớp, và nếu đó là ký tự đại diện đặc biệt" .. ", thì bất kỳ số đối số nào sẽ khớp với" – MikePatel
Vâng, bạn nói đúng, tôi có cũng đã cập nhật câu trả lời cho các chữ ký phương thức. AspectJ không hỗ trợ '(.., myarg, ..)', không chắc chắn lý do tại sao. –
Một số khác đã trả lời một phần câu hỏi trước tôi, vì vậy tôi sẽ chỉ sửa đổi:
.., bla, ..
không hoạt động vì nếu bạn ràng buộc tham số bla
vào một biến có thể có một số kết hợp phù hợp trong trường hợp loại đối sánh xảy ra nhiều lần trong danh sách tham số. Ví dụ:
void foo(int a, String b, String c, File d)
Bây giờ những gì sẽ xảy ra nếu những lời khuyên là:
before(String bla) : call(void foo(.., bla, ..)) && args(bla)
nên bla
bị ràng buộc với giá trị String
của b
hoặc c
?
var-arg chỉ có thể là đối số cuối cùng (ở cuối) trong Java. – Shark
Nó sẽ rất khó/không thể cho trình biên dịch/thông dịch viên để biết đối số nào đã qua thực sự là 'myArg' trong trường hợp của bạn. – climbage