-
[Java] Mapa metod
Potřeboval bych se na základu přoměné typu string rozhodnout, jakou metodu jiné třídy spustit. Napadlo mě jestli se nedá v javě použít něco jako ukazatel na funkci v C. Že bych do kontejneru Map uložil jako klíče stringy a k nim jako hodnoty ty funkce. Jeste jsem vygooglil, ze by se to dalo udělat pomocí switche a metody hashCode ze třídy string, ale to mi nepřije moc bezpečný aby mi hešovaci funkce nevracela stejný hash pro jiný stringy. Nevíte někdo jak by se to dalo elegantně vyřešit?
-
Re: [Java] Mapa metod
-
Re: [Java] Mapa metod
Díky, nějak jsem to podle toho spotvořil a maká to:)
-
Re: [Java] Mapa metod
Ted jsem objevil chybu a nevim jak na ni. Když vyvolám příkaz z mapy a nastane vyjímka např. StackOverflowError(Když rekurzivně volám příkaz z mapy), tak se mi ji nepodaří zachytit v InvocationTargetException protože getCause() vrací null. Vyjímky které jsem vytvořil já to zachytává. Asi jsem moc nepochopil příkaz getCause(). Vrací to třidu která vyvolala vyjímku ne? A co tedy potom dělá getTargetException()? Nevíte někdo? Díky.
Kód:
private Map prikazy;
try {
((Method)prikazy.get(prikaz)).invoke(robot,null);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
if (e.getCause().getMessage()!=null){
JOptionPane.showMessageDialog(null,e.getCause().getMessage(),
"Chyba",
JOptionPane.ERROR_MESSAGE);
}
}