安卓中 lambda 运算符的错误



我想使用 lambda 运算符使用 Runnable 方法编写代码,但我得到的错误错误:(40, 33( 错误:-source 1.7 不支持 lambda 表达式(使用 -source 8 或更高版本来启用 lambda 表达式(这是我的代码:'

public void countDownStart(){
    handler= new Handler();
    runnable= (Runnable) () -> {
       handler.postDelayed((Runnable) this, 1000);
        try{
            SimpleDateFormat dateFormat= new SimpleDateFormat("YYYY-MM-DD");
            Date futureDate= dateFormat.parse("2017-03-31");
            Date currentDate= new Date();
            if (!currentDate.after(futureDate)){
                long diff = futureDate.getTime()- currentDate.getTime();
                long days = diff / (24 * 60 * 60 * 1000);
                diff -= days * (24 * 60 * 60 * 1000);
                long hours = diff / (60 * 60 * 1000);
                diff -= hours * (60 * 60 * 1000);
                long minutes = diff / (60 * 1000);
                diff -= minutes * (60* 1000);
                long seconds = diff / 1000;
             txtTimerDay.setText("" + String.format("%02d", days));
             txtTimerHour.setText("" + String.format("%02d", hours));
             txtTimerMinute.setText("" + String.format("%02d", minutes));
             txtTimerSecond.setText("" + String.format("%02d", seconds));
            }else{
                tvEvent.setVisibility(View.VISIBLE);
                tvEvent.setText("The Event Started");
                textViewGone();
            }
        } catch (Exception e){
            e.printStackTrace();
        }
    };
    handler.postDelayed(runnable, 1 * 1000);
}

您正在使用Java 7。 从 Java 8 开始支持 lambda 表达式。 Android 中的问题是,只有 Android N (7.0( 或更高版本支持 Java 8。 如果您仍然想在较低的 Android 版本中使用 Lambda,您可以使用 RetroLambda 等库,但这些库通常不支持 Java Lambda 的所有功能。

您是否在build.gradle文件中添加了以下说明?

defaultConfig {
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }

相关内容

最新更新