Önelemzés


  1. Egy rövid példa
  2. public class whoami {
        public static void tell(Object o) {
            System.out.println("Az én nevem " + o.getClass().getName() +
                ", és " + o.getClass().getSuperclass().getName() + 
                " leszármazottja vagyok.");
        }
        public static void main(String args[]) {
            tell(new whoami());
        }
    }
    
    whoami.java

  3. Tömb
  4. import java.lang.reflect.*;
    public class ShowArray {
        public static void main(String args[]) {
            if(args.getClass().isArray()) {
                System.out.println("Típus: " + args.getClass().getName());
                System.out.println("Elem típus: " + 
                    args.getClass().getComponentType().getName());
                if(Array.getLength(args) > 0) {
                    System.out.println("Első elem: " + Array.get(args, 0));
                }
            }
        }
    }
    
    ShowArray.java

  5. Szelektív nyomkövetés
  6. public class CounterTrace {
        public static void main(String[] args) {
            ICounter real = new Counter();
            real.inc(); // számláló értéke 1
            real.inc(); // számláló értéke 2
            real.dec(); // számláló értéke 1
            // kiíratáskot meghívódik a számláló toString metódusa
            System.out.println("real counter = " + real);
    
            // becsomagoljuk az igazi számlálót egy nyomkövető objektumba
            ICounter proxy = (ICounter)Tracer.newInstance(real);
            proxy.inc(); // számláló értéke 2; nyomkövetés
            real.inc();  // számláló értéke 3; nincs nyomkövetés!
            proxy.dec(); // számláló értéke 2; nyomkövetés
            // a nyomkövetésen keresztűl hívódik meg a toString metódus
            System.out.println("proxy counter = " + proxy);
        }
    } // CounterTrace
    

  7. Egy nagyobb példa

GNU környezetben a példák fordítása:
  make
és futtatása:
  make run