栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Javalambda表达式中使用的变量应该是final或有效的final

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Javalambda表达式中使用的变量应该是final或有效的final

final
可变装置,它可以被实例化一次。在Java中,你不能在lambda以及匿名内部类中使用非最终变量。

你可以使用旧的for-each循环来重构代码:

private TimeZone extractCalendarTimeZoneComponent(Calendar cal,TimeZone calTz) {    try {        for(Component component : cal.getComponents().getComponents("VTIMEZONE")) {        VTimeZone v = (VTimeZone) component;v.getTimeZoneId();if(calTz==null) {    calTz = TimeZone.getTimeZone(v.getTimeZoneId().getValue());}        }    } catch (Exception e) {        log.warn("Unable to determine ical timezone", e);    }    return null;}

即使我对这段代码有些不了解:

  • 你调用
    a v.getTimeZoneId()
    ;而不使用其返回值
  • 使用分配,
    calTz = TimeZone.getTimeZone(v.getTimeZoneId().getValue())
    ;你不会修改原始传递的内容,
    calTz
    并且你不会在此方法中使用它
  • 你总是返回
    null
    ,为什么不设置
    void
    为返回类型?
    希望这些技巧也能帮助你改善。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/382267.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号