java语法问题

private FutureTask<Map<String, NewsIdInfo>> getSearchFutureTask(NewsItem newsItem) {

    return new FutureTask<>(() -> {
        String docId = newsItem.getDocId();
        ...});

}

() -> 应该代表传入一个callable的匿名子类对象
然而方法内部居然可以绑定入参 这是什么用法啊???

阅读 1.6k
2 个回答

lambda表达式,入参是什么意思

什么叫什么用法,如果你说的是 newsItem 为什么可以出现在 callable 里,是因为 Java 7/8(我记不清了)开始,不强制要求你写 final 了,也就是说从以前就可以这样写,不过会是这个样子:

private FutureTask<Map<String, NewsIdInfo>> getSearchFutureTask(final NewsItem newsItem) {

    return new FutureTask<>(() -> {
        String docId = newsItem.getDocId();
        ...});
}

大概是扫描你匿名子类中所用到的外部变量,可能 做一个快照,然后作为一个 final 给子类用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题