Non voglio avere un normale lambda che implementa un metodo e ridefinisce il suo toString come valore aggiunto. Voglio che l'espressione lambda implementa solo il metodo toString. So che non sto esprimendo molto bene, ma sono certo che mi capirai con questo esempio.Come eseguire un'espressione lambda per definire toString in Java 8?
public class LambdaToStringTest {
public interface ToStringInterface {
public abstract String toString();
}
public static void main(String[] args) {
print("TRACE: %s", (ToStringInterface)()->someComputation()); // <<-- ERROR: The target type of this expression must be a functional interface
}
private static void print(String format, Object... args) {
System.out.println(String.format(format, args));
}
}
compila se cambio il nome del metodo, ma poi non sovrascrive toString in modo metodo di stampa non stampa cosa ci si aspetta.
Si tratta di un tentativo di definire un sottosistema di log che valuta lambdas solo quando necessario (quando verrà realmente stampato) ma compatibile con argomenti non lambda. Conosco altri modi per raggiungerlo, ma mi chiedo perché non posso farlo in questo modo e se c'è una soluzione alternativa o sto facendo qualcosa di sbagliato,
Io non chiedo questo: http://stackoverflow.com/questions/16544583/can-i-override-tostring- method-of-functional-interface-in-jdk8-using-lambdas Voglio implementare solo toString. – aalku