Ich versuche, eine Bedingung (die noch nicht ausgewertet wurde) als Argument für eine Methode zu senden. Ich verstehe, dass in java8 die Lambda-Ausdruck ist der Weg, es zu tun (effektiv setzen die Bedingung in eine Funktion und Senden der Funktion).Wie kann ich eine Bedingung an eine Methode senden, die Lambda-Ausdruck verwendet, damit sie noch nicht ausgewertet wird?
// simple method inside a utilities class
// that does assertions if global debug parameter is true
public class MyUtils
{
public static void do_assertions(boolean argb , String args)
{
if(BuildConfig.pvb_debuggable)
{ assert argb , args ;
}
}
}
// somewhere within app where a development-phase assertion is needed
public class some_class
{
public void some_method()
{
EditText lvo_editText = (EditText) findViewById("the_id") ;
//assert lvo_editText != null;
// ... replace this with a call to do_assertions
MyUtils.do_assertions(() -> { lvo_editText != null ; } , "bad EditText");
}
}
Ich habe viele Variationen dieses Setup ausprobiert. Ich erhalte unterschiedliche Fehler jedes Mal :)
@ Jean-FrançoisSavard: Es scheint, dass die Android N-Plattform Unterstützung für Java 8 Sprachfunktionen hat. – scottb
Ich denke, Sie haben in erster Linie Recht ... aus der Box AS2 wird mit der jdk1.8. *, Aber wird nicht tatsächlich viele der tatsächlichen Funktionen java8 (wie Lambda) aktivieren ... ein paar Optionen scheinen zu existieren : ** 1 ** -> _Java 8 Features aktivieren und die Jack Toolchain_ (http://developer.android.com/preview/j8-jack.html#configuration) ... ... oder ** 2 ** -> _Android N führt die Unterstützung für Java 8-Sprachfeatures_ ein (http://developer.android.com/preview/j8-jack.html#configuration ... ... damit scheint Ihre Antwort ... die Antwort ... danke ... – dsdsdsdsd