Luotauksen kohdemääritykset

Kohdemääritys osoittaa luokat ja metodit, joihin luotausta käytetään.

Kohdemääritys on valinnainen. Jos kohdetta ei ole määritetty, luotausta käytetään kaikkiin luokkiin, jotka instrumentointi käsittelee.

Kohdemäärityksen avulla voit luoda suodatussääntöjä, jotka sisällyttävät tai sulkevat pois metodeja instrumentoinnista sellaisten merkkijonojen perusteella, joita verrataan pakettien, luokkien ja metodien nimiin sekä metodin allekirjoitukseen. Merkkijonoissa voi olla yleismerkkejä, joista "*" vastaa nollaa tai useampaa merkkiä.

Jos kohteen yleismerkin sisältävät merkkijonot vastaavat metodin pakettia, luokkaa, nimeä ja allekirjoitusta, type-ominaisuus määrittää metodin instrumentoinnin (include) tai ei (exclude). Jos merkkijonot eivät vastaa metodin pakettia, luokkaa, nimeä ja allekirjoitusta, oletusarvon mukaan metodi instrumentoidaan.

Kohteeseen kuuluvat seuraavat ominaisuudet:
Ominaisuus Kuvaus
type Pakollinen. type-ominaisuus määrittää, käytetäänkö luotausta kohdemetodiin vai ei. Määritä include-arvo, jos haluat käyttää luotausta luokissa ja metodeissa, jotka vastaavat yleismerkin sisältäviä merkkijonoja, tai exclude-arvo, jos et halua.
package Valinnainen. Määritä yleismerkin sisältävä merkkijono, jota verrataan luokkanimien pakettiosaan. Esimerkki: java.util* vastaa jokaista luokkaa java.util-paketissa ja sen alipaketeissa. Jos arvoa ei ole määritetty, oletusarvo on *.
className Valinnainen. Määritä yleismerkin sisältävä merkkijono, jota verrataan luokkanimiin. Jos arvoa ei ole määritetty, oletusarvo on *.
method Valinnainen. Määritä yleismerkin sisältävä merkkijono, jota verrataan metodinimiin. Jos arvoa ei ole määritetty, oletusarvo on *.
signature Valinnainen. Määritä yleismerkin sisältävä merkkijono, jota verrataan metodin allekirjoitukseen. (Allekirjoitus on merkkijono, joka edustaa metodin argumentteja ja palautustyyppiä.) Käytä Javan sisäistä muotoa metodien allekirjoituksissa. Esimerkki: (Ljava/lang/Object;)D on sellaisen metodin parametri, joka ottaa parametriksi objektin ja palauttaa kaksoistarkkuusliukuluvun. Tämän yleismerkin sisältävän merkkijonon avulla voi erotella ylikuormitetut metodit. Jos arvoa ei ole määritetty, oletusarvo on *.

Huomautukset:

  • Luotauksessa voi olla useita kohdemäärityksiä, jotka sisältävät peräkkäisiä kohdennussääntöjä. Voit käyttää luotausta vain tiettyihin metodeihin määrittämällä ensin sisällytettävät metodit ja lisäämällä sitten lopullisen kohdemäärityksenpackage=* className=* method=* signature=* type=exclude.
  • Määrittämiäsi pakettien ja luokkien nimiä verrataan luokan implementoimien liittymien pakettien ja luokkien nimiin. Esimerkiksi java.util.HashMap implementoi liittymän java.util.Map. Jos luotauksen kohteena on paketti java.util, luokan nimi Map ja metodin nimi size, luotausta käytetään size -metodiin luokassa java.util.HashMap.size() ja missä tahansa muussa luokassa, joka implementoi Map-liittymän.
  • Merkkijonoihin perustuva vastaavuus ei huomioi periytyvyyssuhteita. Jos luokka Derived laajentaa luokkaa Base, ja luotauksen kohteena on Base.run(), luotausta ei automaattisesti käytetä kohteeseen Derived.run().
  • Jos paketin merkkijono kohdemäärityksessä on yksi pistemerkki ("."), se tarkoittaa globaalia, nimeämätöntä Java-pakettia. Tämän avulla voit valita kohteeksi luokkia globaalista paketista.
  • Callsite-luotaukset vertaavat kohdemerkkijonoja ja sääntöjä kutsutun metodin pakettiin, luokkaan, nimeen ja allekirjoitukseen. Vertailu tehdään suhteessa kutsuttuun metodiin sellaisena kuin se oli käännöshetkellä eli staattisesti tunnettuihin luokan ja metodin nimiin, ei varsinaisiin metodeihin, jotka kutsutaan periytymis- ja näennäisfunktioiden seurauksena. Jos kutsu toteutetaan liittymän viitteen kautta, liittymän nimen on täsmättävä.
Esimerkki:

Voit määrittää kohteen valitsemalla Kohde-vaihtoehdon Luotaukset-sivun rakenneruudussa, valitsemalla Lisää-vaihtoehdon ja valitsemalla sitten Muokkaa-vaihtoehdon muokkausruudussa.

Tämä esimerkki käyttää luotausta vain metodeihin, joiden nimet alkavat Get luokissa, joiden nimet loppuvat Proxy paketissa com.example. Include- ja exclude-tyyppien kohdemerkinnät; exclude-kohdemerkinnässä tähti yleismerkkinä sulkee kaikki pois; include-merkintä määrittää kohdemetodit. Kaikki muut luokat ja metodit on suljettu pois instrumentoinnista.