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

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

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
    为返回类型?
    希望这些技巧也能帮助你改善。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4938269.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存