Class ReLoad - Methodus elérése?

Fórumok

Class ReLoad - Methodus elérése?

Hozzászólások

A lényeg az, hogy dinamikus programot írok ami egy osztályt kicserél futás közben.
Példaképp az ujratoltendő osztalyt a Reload konyvtáraba teszem.

Példaképppen:

---------------
MYCLASS.class
-

class MYCLASS
{
public void printLine(s)
{
System.out.println(s);
}
}
---------------

URL[] urls = { new URL("file:///c:/Reload/") };
URLClassLoader loader = new URLClassLoader(urls);
Class myclass = loader.loadClass("MYCLASS");
Class params[] = { String.class };
Object paramsObj[] = { "Kiirt szöveg." };
Method method = myclass.getDeclaredMethod("printLine",params);
method.invoke(myclass.newInstance(), paramsObj);

A kérdés az lenne, hogy lehetséges ennél egyszerübben elérni az ujratoltott osztályban lévo metodust.

A mukodes behatobb ismerete nelkul:

A betolteshez szukseges muveleteket nem hinnem hogy meg tudod sporolni, maximum elrejteni. Irj ra egy wrapper osztalyt, ami ugyanazt az interfeszt teljesiti, mint az lecserelt osztaly, es a hatterben elvegzi ezeket a muveleteket neked.

HTH:
Babszem.

[quote:d06b941655="Hekii"]A lényeg az, hogy dinamikus programot írok ami egy osztályt kicserél futás közben.
Példaképp az ujratoltendő osztalyt a Reload konyvtáraba teszem.

Példaképppen:

---------------
MYCLASS.class
-

class MYCLASS
{
public void printLine(s)
{
System.out.println(s);
}
}
---------------

URL[] urls = { new URL("file:///c:/Reload/") };
URLClassLoader loader = new URLClassLoader(urls);
Class myclass = loader.loadClass("MYCLASS");
Class params[] = { String.class };
Object paramsObj[] = { "Kiirt szöveg." };
Method method = myclass.getDeclaredMethod("printLine",params);
method.invoke(myclass.newInstance(), paramsObj);

A kérdés az lenne, hogy lehetséges ennél egyszerübben elérni az ujratoltott osztályban lévo metodust.

Az újra töltést nem lehet meg spórolni, a metódus hiváshoz szükséges pepecselésen lehet röviditeni, hogyha csinálsz rá egy interfacet.

S akkor
((MySimpleInterface)myclass.newInstance()).printLine("kiirtSzoveg");