Hirdetés

Új hozzászólás Aktív témák

  • BaLinux

    tag

    válasz Protezis #191 üzenetére

    Jóra gondolsz. Akkor máshogy próbálom meg a dolgot :)
    A Java nem scriptnyelv, nem erre való, tudom csak kíváncsi vagy. Ha valamire ilyen megoldást agyaltál ki, gondolj ki mást, mert nagy valószínűséggel rossz módszer. :)
    Ettől függetlenül van kivétel (pl RPC vagy hasonló dolgok implementálása), és ezért van is megoldás minderre. Nézd meg a Java API doksiban a java.lang.reflect csomag tartalmát, mindent tartalmaz ami a nyelvi reflekcióhoz szükséges lehet. Metódusok, konstruktorok, kivételek, tömbök, mindent tud. Advanced topic!
    Hogy lássad, kb. ennyiből állna a dolog:
    ha van egy Osztaly nevű class-od, annak float function(int) metódusa, és annak egy o1 instance-ja, akkor a következő rész meghívja a függvényt, és a visszatérő értéket is megkapod.

    Method m=Osztaly.getMethod(''function'', new Class[] {int.class});
    Object ret=m.invoke(o1, new Object[] {new Integer(1)});
    float vissza=((Float)ret).floatValue();

    Kész. Persze semmi értelme ennek, mert írhatnád ezt is, ez ugyanaz:

    float vissza=o1.function(1);

    Csak az előbbinél észre se veszed ha elírtad a függvénynevet, vagy bármilyen hibát vétettél, csak futási időben, míg az utóbbinál már fordításnál. A típusbiztonság nagyon fontos a jó programban, úgyhogy törekedni kell rá. :D

Új hozzászólás Aktív témák