我们有一个android库,供客户在各种项目中使用。大多数项目将JellyBean或KitKat作为最低SDK版本。关键动机是使用从接口到lambda表达式的移动,并在无法做到的地方使用默认接口方法。
我在此处https://developer.android.com/studio/write/java8-support已阅读指南,并且两个功能都没有最低SDK级别。
但是,我想向走过同样道路的人们了解。将库升级到1.8
时,我们应该准备遇到什么问题谢谢
答案 0 :(得分:1)
确保 Lambda的和方法参考将使您的代码更易于阅读和维护:
Java 7:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// do some stuff
}
Java 8:
button.setOnClickListener((view) -> {
// do some stuff
}
改进的类型推断将允许删除大量强制类型转换。例如:
TextView keyNameText = (TextView) findViewById(R.id.key_choice_key_name_text);
将变为:
TextView keyNameText = findViewById(R.id.key_choice_key_name_text);
如果开发人员习惯了经典的Java8,那么乍一看似乎有些奇怪:
虽然您可以在代码中编写lambda表达式(因为它们是Java 8语言功能的一部分),但是您不能使用通常与lambda关联的接口,即java.util.function
中的接口,即:
java.util.function.Function
java.util.function.Consumer
因为它们是Java 8语言API的一部分,所以要求API级别为24或更高。因此,例如,如果您碰巧需要java.util.function.Consumer
,则必须编写自己的使用者:
public interface MyConsumer<T> {
void accept(T t);
}
话虽如此,迁移非常简单,在我看来并没有带来任何退步。