home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 September / Chip_2001-09_cd1.bin / chplus / java / Pokusy.java < prev    next >
Text File  |  2001-08-01  |  2KB  |  60 lines

  1. // Soubor Pokusy.java
  2. /* Trida pro pokusy s reflexi.
  3.    Obsahuje staticky inicializator, ktery vypise
  4.    zpravu pri zavedeni tridy do pameti, a metodu main().
  5.    
  6.    Metoda main() ocekava jako parametr
  7.    retezec predstavujici
  8.    PLNE KVALIFIKOVANE JMENO TRIDY, KTEROU CHCEME ZAVEST
  9.    DO APMETI A JEJIZ METODU metoda() BUDEME VOLAT.
  10.  
  11.    Metoda main() postupne zavede danou tridu do pameti,
  12.    vytvori jeji instanci,
  13.    ziska objekt predstavujici metodu  metoda(int, double)
  14.    a tuto metodu zavola s parametry 3 a 6.6.
  15.  
  16.    POZOR, volana metoda musi byt verejne pristupna (public)!
  17.  
  18.    Jako priklad lze pouzit tridu pokus.Pomocna, kterou najdete
  19.    v souboru Pomocna.java. Ulozite-li prelozeny soubor Pomocna.class
  20.    do podadresare pokus (trida je v baliku pokus) a spustite-li program
  21.    prikazem
  22.  
  23.    java Pokusy pokus.Pomocna
  24.  
  25.    dostanete vystup
  26.  
  27.    Hlasi se trida Pokusy
  28.    Hlasi se trida Pomocna
  29.    class pokus.Pomocna
  30.    Konstruktor tridy Pomocna
  31.    public void pokus.Pomocna.metoda(int,double)
  32.    Metoda volana s parametry 3 a 6.6
  33.  
  34. */
  35.  
  36. import java.lang.reflect.*;
  37.  
  38. public class Pokusy {
  39.  
  40.   static{ // Staticky inicializator
  41.     System.out.println("Hlasi se trida Pokusy");
  42.   }
  43.   public Pokusy() {
  44.   }
  45.   public static void main(String[] args) {
  46.     try {
  47.       Class c = Class.forName(args[0]); // Zavede tridu do pameti
  48.       System.out.println(c);
  49.       Object obj = c.newInstance();    // Vytvori novou instanci
  50.       Class [] cp = new Class[]{int.class, double.class}; // Pripravi parametry
  51.       Method m = c.getMethod("metoda", cp);// Ziska instanci tridy Method popisujici danou metodu
  52.       System.out.println(m);
  53.       m.invoke(obj, new Object[]{new Integer(3), new Double(6.6)}); // a zavola ji
  54.     }
  55.     catch(Exception e){
  56.       e.printStackTrace();
  57.     }
  58.   }
  59. }
  60.