Ik ben op zoek naar een vergelijkbare functie als 'eval()' in JavaScript en PHP, maar dan in Java. Aangezien Java pre-compiled is bestaat een dergelijke functie niet. Een optie is om reflection te gebruiken, maar buiten dat het traag is (snelheid is een issue) vind ik het ook niet handig genoeg.
Ik heb bijvoorbeeld de string "justAMethod(value1,value2)". Nu wil ik deze methode, inclusief argumenten aanroepen op een vast object. Dus new TestObject().bovenstaandestring . In Javascript zou dat dus eval("TestObject()."+methodstring); zijn.
Ik heb het nu opgelost met een regular expression om functies uit elkaar te halen en dan de functie naam door een hele lange lijst if/else if statements te halen. Het werkt, maar het komt nogal over als een hele ranzige oplossing. Bij het toevoegen of aanpassen van functionaliteit moet dat dus ook in de if/else if constructie.
Reflection lost dit deels op, maar je moet nog steeds de functies en argumenten uit elkaar trekken met een regex. Daarnaast is performance natuurlijk een issue bij reflection.
The methodenamen komen uit XML bestanden, vandaar dat het strings zijn. Iemand enig idee of hier een handige oplossing voor is?
Ik heb bijvoorbeeld de string "justAMethod(value1,value2)". Nu wil ik deze methode, inclusief argumenten aanroepen op een vast object. Dus new TestObject().bovenstaandestring . In Javascript zou dat dus eval("TestObject()."+methodstring); zijn.
Ik heb het nu opgelost met een regular expression om functies uit elkaar te halen en dan de functie naam door een hele lange lijst if/else if statements te halen. Het werkt, maar het komt nogal over als een hele ranzige oplossing. Bij het toevoegen of aanpassen van functionaliteit moet dat dus ook in de if/else if constructie.
Reflection lost dit deels op, maar je moet nog steeds de functies en argumenten uit elkaar trekken met een regex. Daarnaast is performance natuurlijk een issue bij reflection.
The methodenamen komen uit XML bestanden, vandaar dat het strings zijn. Iemand enig idee of hier een handige oplossing voor is?