我正在使用 Twitter4J。但我要问的问题更笼统。我想访问给定推文的用户 ID。目前,我有以下两种选择:
//Option 1
stream.map(status -> status.getUser().getId())
.forEach(System.out::println);
//Option 2:
stream.map(Status::getUser)
.map(User:getId)
.forEach(System.out::println);
我不喜欢第一个选项中的 lambda 表达式,也不喜欢在第二个选项中被迫调用两个 maps
。有没有办法制作方法引用链?我知道 Status::getUser::getId
不起作用,但我想知道是否有替代方法。
最佳答案
不,这是两种方法。其他任何事情最终都会变得不太清楚。
但是,既然你问了,这里有一些选择。
static<T,U,R> Function<T,R> chain(
Function<? super T, ? extends U> f1,
Function<? super U, ? extends R> f2) {
return t -> f2.apply(f1.apply(t));
}
stream.map(chain(Status::getUser, User::getId))
或者
static<T,R> Function<T,R> func(Function<T,R> f) {
return f;
}
stream.map(func(Status::getUser).andThen(User::getId))
关于java - Map 方法引用链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26920866/