2015-11-20 15 views
7

Vorrei sapere se esiste un modo per convertire uno Predicate in String. Per esempio ci sarà una funzione:Java: conversione del predicato nella stringa

public static <T> String convertPredicate(Predicate<T> objPredicate) { 
    return ?... 
} 

In modo che la seguente chiamata restituirà (obj) -> obj.value== 1:

convertPredicate((obj) -> obj.value== 1) 
+0

Alcuni progetti utilizzano l'analisi del codice byte per tentare cose simili: (1) dalle espressioni java a SQL, (2) per generare JavaScript da java. Tuttavia questo sarebbe un enorme lavoro d'amore, poiché un'istanza di un'interfaccia anonima viene generata in java. E certamente i nomi delle variabili devono essere artificiali. –

+0

No, non puoi guardare e vedere "cosa c'è dentro" una lambda e la sua implementazione. –

risposta

6

No, in generale, non è possibile in Java. Si può provare ad analizzare e decompilare il bytecode della classe lambda (sebbene ottenere il bytecode di questa classe sia già un'attività non banale), ma una tale soluzione sarebbe davvero complessa e fragile. La rappresentazione runtime particolare di lambda non è specificata e potrebbe cambiare in diverse versioni Java o diversi fornitori JDK.

Problemi correlati