Példa staticField és staticInitializer adatelemekre

Ezen példa a staticField adatelem és a staticInitializer vizsgáló töredék használatát mutatja be.

Ebben példában a vizsgáló nyomon követi egy osztálypéldány létrehozásának idejét. Ha egy példány az osztály előző példányának létrehozásánál egy másodperccel később kerül létrehozásra, akkor a vizsgáló egy naplóüzenetet ír.

A vizsgáló tevékenységének lépései:
  1. A statikus mező adatelem használatával létrehoz egy Date (dátum) típusú statikus mezőt minden vizsgált osztályban. A statikus mező a new Date(); hívással kerül inicializálásra.
  2. A staticInitializer töredékben egy vizsgált osztály Date (dátum) példányát "nulla időpontra" (1970. január) állítja a betöltéskor.
  3. Az entry (bejegyzés) töredékben ellenőrzi az előző frissítés végrehajtásának idejét, és jelentés ad ki, ha a frissítés több mint egy másodperce került végrehajtásra. (A célszabályok miatt az entry töredék csak konstruktorokban fut.)
  4. Végül a Date (dátum) példány értékét az aktuális dátumra frissíti.

Ezen vizsgáló a statikus mező meghatározást használja a vizsgált osztályokban új statikus mező létrehozására. Összehasonlításként, a töredék osztály hatókör elem használata a Date (dátum) mező meghatározására a vizsgáló töredéket tartalmazó előállított osztályban megjelenő egyetlen dátumpéldányban történne meg attól függetlenül, hogy a vizsgáló hány osztályon kerül alkalmazásra. Ez bármely vizsgált osztály példányainak létrehozása közti időkésleltetés figyelemmel kisérése céljából használható, nem pedig az egyes vizsgált osztályok példányainak létrehozása közti késleltetés céljából.

A vizsgáló a következő bejegyzésekkel van meghatározva a Vizsgálókészlet szerkesztőben:
  • Teljes képzésű Java típus statikus mezőhöz (az érték megadásához kattintson a jobb egérgombbal a fapanel Vizsgáló elemére, majd kattintson az előugró menü Új > Statikus mező menüpontjára):

    java.util.Date

  • Cél (az értékek megadáshoz válassza a fapanel Cél elemét, majd kattintson a Szerkesztés menüpontra):
    • Cél típusa: include
    • Csomag: com.sample* (Tényleges csomagnevet adjon meg.)
    • Osztály: *
    • Metódus: <init>
    • Metódus aláírás: *
  • Cél (az értékek megadásához kattintson a szerkesztőpanel Hozzáadás, majd Szerkesztés lehetőségeire):
    • Cél típusa: exclude
    • Csomag: *
    • Osztály: *
    • Metódus: *
    • Metódus aláírás: *
  • Töredék (az értékek megadásához válassza a fapanel Töredék bejegyzését):
    • Töredék típusa: entry
    • Adatelemek:
      • Adattípus: staticField, Név: lastInstanceDate
      • Adattípus: className, Név: clname
    • Java kód:

      java.util.Date d = new java.util.Date();
      long now = d.getTime();
      long prev = lastInstanceDate.getTime();
      if (prev != 0 && prev + 1000 < now) {
        System.out.println("[" + clname + " példány > 1 másodperc után]");
      }
      lastInstanceDate.setTime(now);

    • Töredék (az értékek megadásához kattintson a jobb egérgombbal a Vizsgáló bejegyzésre, majd kattintson az Új > Töredék menüpontra):
      • Töredék típusa: staticInitializer
      • Adatelemek:
        • Adattípus: staticField, Név: lastInstanceDate
        • Adattípus: className, Név: clname
      • Java kód:

                 lastInstanceDate.setTime(0);
                 System.out.println("[" + clname + " osztály betöltve]");