android项目中引入lambda表达式,无疑是可以减少部分代码的书写,但是我在使用过程中,遇到了以下几个问题:
- 泛型不能获取,导致回调方法的参数不知道具体类型。
如下代码传入了一个NoticeResponse的泛型,这个泛型约束了success方法的参数类型就是NoticeResponse类型。
new ISuccess<NoticeResponse>() {
@Override
public void success(NoticeResponse response) {
// 处理服务器数据成功的情况
}
}
将上面的代码使用lambda简写以后,如下
response ->{}
因为lambda没法传入泛型,导致对应的代码不能简写。
- 关于回调方法会抛出异常,简写后,导致代码表达意思不明确。
new Consumer<LocationResponse>() {
@Override
public void accept(LocationResponse locationResponse) throws Exception {
Log.i("locationResponse",locationResponse.toString());
}
}
简写以后的代码
locationResponse ->{}
上面的代码很难知道有异常,如果测试过程中没有发现,到了线上一旦出现问题,准备懵逼。
这两个是我遇到的关于lambad的问题,你们又遇到过其他的吗?
网友评论