首页 > 解决方案 > Upgrading a Handler with Runnable to lambda expression

问题描述

I want to upgrade this code to use a lambda expression:

Handler handler = new Handler(Looper.getMainLooper());
handler.postDelayed(new Runnable() {
    @Override
    public void run() {
        missileX = ufoX;
        resetRecent();
        waitForUfoTimer = false;
    }
}, randomize(20000, 18000));

I try it this way but it doesn't compile:

Handler handler2 = new Handler(Looper.getMainLooper());
handler2.postDelayed(Runnable task = () -> {  
    missileX = ufoX;
    resetRecent();
    waitForUfoTimer = false; 
  }
}, randomize(20000, 18000));

Where are some instructions so that I can learn how to do it? It is preposterous that I must guess the syntax.

标签: javaandroidlambdajava-8

解决方案


您不必声明要分配给 lambda 的变量。这就够了 :

Handler handler2 = new Handler(Looper.getMainLooper());
handler2.postDelayed(() -> {  
    missileX = ufoX;
    resetRecent();
    waitForUfoTimer = false; 
  }
, randomize(20000, 18000));

推荐阅读