小编gla*_*ded的帖子

减少一组空集是否有效?

这不应该工作吗?

> val setOfSets = Set[Set[String]]()    
setOfSets: scala.collection.immutable.Set[Set[String]] = Set()

> setOfSets reduce (_ union _)
java.lang.UnsupportedOperationException: empty.reduceLeft
  at scala.collection.TraversableOnce$class.reduceLeft(TraversableOnce.scala:152)
  [...]
Run Code Online (Sandbox Code Playgroud)

collections reduce scala set

10
推荐指数
3
解决办法
1万
查看次数

防止Kotlin强制Java查看通配符类型

这很好用:

class Wrapped<out T>(val value: T)

open class Wrapper<T> {
    fun wrap(map: T): Wrapped<T> = Wrapped(map)
}

class Wrapper2 : Wrapper<Map<String, String>>()

val wrapped: Wrapped<Map<String, String>> = Wrapper2().wrap(mapOf())
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试Wrapper2.wrap从Java 访问时,Map会返回一个通配符类型:

    Map<String, String> toWrap = new HashMap<>();
    Wrapped<Map<String, String>> result;
    result = new Wrapper<Map<String, String>>().wrap(toWrap); // ok
    result = new Wrapper2().wrap(toWrap); // NOT ok, returns Wrapped<Map<String, ? extends String>>
Run Code Online (Sandbox Code Playgroud)

我可以通过覆盖解决此wrapWrapper2与明确的类型.

为什么Wrapper2.wrap返回不同的类型Wrapper.wrap

kotlin

5
推荐指数
1
解决办法
1006
查看次数

标签 统计

collections ×1

kotlin ×1

reduce ×1

scala ×1

set ×1