映射值的延迟实例化



有没有办法实例化map惰的值?

例如

class MapTest {
    @Lazy(soft = true) HashMap<String, List<String>> map
}

这样做,我可以使用此电话并在没有收到NullPointerException的情况下获得null

new MapTest().map.key1

但是尝试调用

map.key1.remove(1) 

将导致NullPointerException由于value正在null。(如果它抛出IndexOutOfBounds例外就好了)

有没有办法实例化地图的list值?

尝试map.withDefault

def map = [:].withDefault { [] }
assert map.key1.isEmpty()

一些解释:

  • [:] 是实例化空哈希映射的时髦方法
  • withDefault是地图上的一种时髦方法,可以闭合。 每次请求键初始化值(如果不存在)时,都会调用此闭包。 此闭包采用一个参数(键),并且应该值
  • [] 是创建空列表的时髦方法 - { [] } 是一个闭包,为每个键返回一个空列表

在此处查看其他示例

最新更新