在Kotlin Set界面中调用add方法时未解决的引用错误

luj*_*jop 6 kotlin

如果我使用Set接口引用并尝试调用add方法,则会得到一个未解决的引用错误:

  fun main(args : Array<String>) {
    val set = HashSet<Integer>()
    set.add(Integer(1)) //OK

    val seti : Set<Integer> = HashSet<Integer>()
    seti.add(Integer(2)) //FAILING: Unresolved reference to add**
  }
Run Code Online (Sandbox Code Playgroud)

我不明白那种行为.Java Set接口有一个add方法,我希望Kotlin可以作为扩展版本而不是更少的方法.

PD1:我在Idea IDE中遇到了同样的错误或者使用gradle构建.PD2:使用kotlin 1.0.0-beta-4584

nha*_*man 6

Kotlin将Java的Set接口分为两个接口:SetMutableSet.后一个接口声明了变异方法,例如add您正在寻找的方法.

通常,接口(如MutableSet扩展Set接口)和实现(如HashSet实现MutableSet接口).Set然后可以使用该接口传递只读实例,以帮助避免常见错误的发生.