Hozzászólások
Ok, köszi, ez kellet nekem:)
- A hozzászóláshoz be kell jelentkezni
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 hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
[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");
- A hozzászóláshoz be kell jelentkezni