2012-09-06 13 views
5
yılında

Benim anlayış ..0-Many args ve *any ismin bir arg olmasıdır ne anlama geliyor. Bu doğru mu?.. ve * AspectJ

args(..,myArg,..) gibi AspectJ destek sözdizimi mu?

+0

var-arg sadece Java (sonunda) son argüman olabilir. – Shark

+0

Derleyici/yorumcunun sizin durumunuzda hangi argümanın gerçekten 'myArg' olduğunu bilmesi çok zor/imkansız olurdu. – climbage

cevap

7

Bu AspectJ'yi sitesinden şudur: "" http://www.eclipse.org/aspectj/doc/next/progguide/semantics-pointcuts.html

* haricinde herhangi bir karakter sayısını gösterir

..

herhangi bir sayıda olmak üzere, herhangi bir karakter sayısını gösterir ""

Güncelleme Eylem AspectJ itibaren - yöntem imzalar için: yöntemi imzalar ise

, joker .. bir yöntem ile alınan argümanlar her türlü numarayı belirtmek için kullanılır

* tek bir bağımsız değişkeni belirtir

+0

aynı zamanda bu: "Eğer durum bu ise '*' özel joker ise joker, sonra herhangi bir argüman maç ve edecek" .. "sonra bağımsız değişken herhangi bir sayı maç olacak" Evet, ben doğru – MikePatel

+0

sahiptir Cevap, yöntem imzaları için de uygun şekilde güncelleştirildi. AspectJ desteklemiyor '(.., myarg, ..)', neden olmasa da emin değil. –

4

Diğerleri bana soruyu yanıtlamadan önce yanıt verdiler, bu yüzden sadece değiştireceğim:

.., bla, .. çalışmıyor çünkü değişkene bla parametresini bağlarsanız, eşleme türünün parametre listesinde birden çok kez ortaya çıkması durumunda birkaç eşleştirme kombinasyonu olabilir. Örnek:

before(String bla) : call(void foo(.., bla, ..)) && args(bla)

blab veya c ait String değerine bağlı olmalı: tavsiyem ise

void foo(int a, String b, String c, File d)

Şimdi ne olacağını gerekir?