老师您好,
问题1: map方法中调用了f.apply(this.data),这里的this是指的是event -> event.map(Transforms::transform) 中的event吗?
我把map函数入参改写了一下
s.map(event -> {
// 这里的event是Event
System.out.println(event);
// 问题3:这里的e如何自动识别为Event.data的呢
return event.map(e -> {
// 这里的e打印出来的是int类型,也就是Event.data?咋转的呢
System.out.println(e);
return Transforms.transform(200);
});
})
问题2: 我理解的调用链是 f.apply(this.data) -》Transforms.transform(this.data),那么我代码中的Transforms.transform(e)也传入了一个参数e,但是事实上我的e=200入参成功了,那么f.apply(this.data)的执行流程是什么样的呢?
提出以上3个问题,这段逻辑如何正确理解呢?
我又改写了代码,在Event中加入了data2变量,为啥调用event.map(e -> {System.out.println(e) 推导出来的e是data,而不是data2呢?
public class Event<T>{
// 新增
T data2;
T data;
public Event(T data){
this.data = data;
}
// 新增
public void setData2(T data2) {
this.data2 = data2;
}
.......
s.map(event -> {
event.setData2(2000);
return event.map(e -> {
// 这里的e是Event.data, 为啥不是data2呢
System.out.println(e);
return Transforms.transform(e);
});})
.forEach(e ->
System.out.println(e.data)
);
登录后可查看更多问答,登录/注册