我想使用 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
}