You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Scala REPL中默认使用Scala List而非java.util.List

如何在Scala REPL中导入java.util._后默认使用Scala的List?

我之前也踩过这个坑!当你导入java.util._之后,Scala REPL会把List优先解析成Java的java.util.List——但这玩意儿是个接口,根本不能直接用List(...)的方式实例化,所以才会弹出那个“object java.util.List is not a value”的错误。下面给你几个实用的解决办法:

方法1:显式导入Scala的List,覆盖通配符导入优先级

直接在导入java.util._之后,显式导入Scala的不可变List,因为显式导入的优先级高于通配符导入,这样List就会默认指向Scala的版本:

scala> import java.util._
scala> import scala.collection.immutable.List
scala> val dup = List(1,1,1,2,3,4,5,5,6,100,101,101,102)
dup: List[Int] = List(1, 1, 1, 2, 3, 4, 5, 5, 6, 100, 101, 101, 102)

方法2:给Scala的List起别名,避免混淆

如果需要同时使用Java和Scala的集合,给Scala的List起个简洁的别名会更清晰:

scala> import java.util._
scala> import scala.collection.immutable.List as ScalaList
scala> val dup = ScalaList(1,1,1,2,3,4,5,5,6,100,101,101,102)
dup: List[Int] = List(1, 1, 1, 2, 3, 4, 5, 5, 6, 100, 101, 101, 102)

方法3:启动REPL时预先设置默认导入

如果不想每次进入REPL都手动导入,启动Scala REPL时可以加上参数,预先把Scala的List设为默认:

scala -import scala.collection.immutable.List

这样不管你之后有没有导入java.util._,直接写List(...)都会默认调用Scala的不可变List。

错误场景回顾

你之前遇到的报错情况是这样的:

scala> import java.util._
scala> val dup = List(1,1,1,2,3,4,5,5,6,100,101,101,102)
<console>:35: error: object java.util.List is not a value
val dup = List(1,1,1,2,3,4,5,5,6,100,101,101,102)
^

内容的提问来源于stack exchange,提问作者stack0114106

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:24:19