java.util.concurrent.LinkedBlockingQueue put方法在Scala中需
发布时间:2020-12-15 03:05:20 所属栏目:Java 来源:网络整理
导读:以下是代码片段 – import java.util.concurrent.LinkedBlockingQueue def main(args:Array[String]) { val queue=new LinkedBlockingQueue queue.put("foo") } 这给了我 – 错误:类型不匹配; 发现:java.lang.String(“foo”) 要求:没什么 queue.add( “f
以下是代码片段 –
import java.util.concurrent.LinkedBlockingQueue def main(args:Array[String]) { val queue=new LinkedBlockingQueue queue.put("foo") } 这给了我 – 错误:类型不匹配; 我的理解是因为我没有指定进入队列的元素的类型.如果是这种情况,我们如何在Scala中为LinkedBlockingQueue指定类型而不是默认的通用类型? 解决方法
当您不提供类型签名但需要一个时,Scala可能使用最严格的签名.由于Nothing是最严格的(没有什么可以是Nothing!),Scala选择LinkedBlockingQueue [Nothing].
但在这种情况下,限制性意味着您实际上无法将任何内容放入此限制性高的队列中. 正如您已经发现的那样,解决方案是指定集合中的类类型: val queue = new LinkedBlockingQueue[String] 但请注意,类型推断器可以通过遵循“尽可能限制”规则来确定其他情况下的正确类型.例如,如果initial是另一个类型为包含字符串的Java集合, val queue = new LinkedBlockingQueue(initial) 会工作,因为它会从最初读取字符串类型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 多线程 – 如何使用Delphi从Thread更新GUI
- java.lang.ClassCastException:java.lang.Integer无法强制
- java – 添加安全标头
- JSP config.getServletContext()方法:获取Servlet上下文
- java中double类型运算结果异常的解决方法
- 调整Java中BufferedImage的亮度和对比度
- Java堆内存使用量波动
- 浅谈java的接口和C++虚类的相同和不同之处
- java – 执行失败的任务’:app:compileDebugNdk’无法运行
- java.lang.IllegalStateException:预期BEGIN_ARRAY但在第1