Ho provato a utilizzare le cose su Janino su Android e ho concluso che semplicemente non funzionano all'interno della VM Dalvik.Compilazione di String come codice durante il runtime su Android
Quindi, sto solo facendo una semplice domanda: su Android, è possibile compilare una stringa contenente codice durante il runtime per l'utilizzo all'interno dell'applicazione. Se è così, ci sono delle librerie che mi permettono di farlo e/o puoi condividere un esempio di codice su come farlo?
Per (molto semplice) esempio, Se avessi un oggetto String contenente il seguente:
public class Adder{
int x;
int y;
public Adder(int x,int y) {
this.x = x;
this.y = y;
}
public int add() { return x+y;}
}
Come una linea gigante di corda. C'è un modo in cui posso elaborarlo per creare un'istanza di un oggetto Adder in modo da poter chiamare il metodo add()
, ad esempio, tramite l'API Reflection?
Modifica Ho provato l'interpretazione del beanshell ma si è rivelato troppo lento. Im che cerca di qualcosa di un po 'più veloce, proprio come Janino
Ive ha esaminato la documentazione ma non ha idea di come sarei in grado di utilizzarlo per compilare una stringa di codice come codice. Da quello che sembra (almeno nell'esempio del mondo ciao), non sarò in grado di usarlo per compilare effettivamente le stringhe. Sottolineo la parte di stringa perché l'utente deve creare un'espressione matematica che deve essere compilata e valutata in un doppio. – sourdesi
Yikes, la compilazione dinamica dei dati immessi dall'utente sembra un duro da spezzare. Dovresti analizzare quella stringa per i pezzi da costruire e il metodo di "equazione" usando Dexmaker. es. "2 * 4/6" Si potrebbe sicuramente usare dexmaker per costruire dinamicamente un metodo e poi eseguirlo, ma sarebbe abbastanza incline a provare e analizzare al volo in quel modo. Se tu avessi accesso a un ponte Java-> JS potresti essere in grado di usare qualcosa come mathjs (http://mathjs.org/) ma anche solo valutare ciò che è stato inserito in esso, non analizzarlo. – Durandal
Sì, mi ha infastidito per una settimana. Ho passato tutto da compilatori a valutatori di espressioni a linguaggi di scripting e tutto era troppo lento o non funzionava. Non ho ancora perso la speranza, però, troverò un modo di fare. – sourdesi