斯卡拉 – 为什么这个引用含糊不清?
发布时间:2020-12-16 19:10:35 所属栏目:安全 来源:网络整理
导读:import swing._object PeerTest extends SimpleSwingApplication { def top = new MainFrame { val p = peer.getMousePosition }} 给 error: ambiguous reference to overloaded definition,both method getMousePosition in class Container of type (x$1:
import swing._ object PeerTest extends SimpleSwingApplication { def top = new MainFrame { val p = peer.getMousePosition } } 给 error: ambiguous reference to overloaded definition,both method getMousePosition in class Container of type (x$1: Boolean)java.awt.Point and method getMousePosition in class Component of type ()java.awt.Point match expected type ? val p = peer.getMousePosition 但添加类型 val p: Point = peer.getMousePosition 没事.为什么? 编辑:导致问题: class A { def value() = 123 } class B extends A { def value(b: Boolean) = 42 } object Main extends App { println ((new B).value) } 不会引起问题: class A { def value() = 123 def value(b: Boolean) = 42 } class B extends A {} object Main extends App { println ((new B).value) } 所以我认为答案必须解释为什么只有当方法在不同的类中时才会发生. 解决方法
有两种方法getMousePosition没有,一种有boolean参数.
如果没有类型注释,Scala不知道您是否希望在一个参数(Function1对象)中引用该方法,或者您想要调用不带参数的方法(产生一个Point). 指定预期类型可明确您的意图. 使用getMousePosition()也应该可以正常工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- codis错误:Can't save in background: fork: Cannot a
- angular自定义服务 历史回退到“上一个页面”
- Bash脚本如何查找文件夹中的每个文件并在其上运行命令
- 简单的学习webservice
- Scala数据结构:操作链(如mapValues,filter …)和中间结果
- 日期时间选择器 Bootstrap日期和时间表单组件。
- angularjs – UI-路由器 – 在每次路由更改时运行功能 – 州
- WebService学习总结(四)——调用第三方提供的webService服务
- 在bash中发生匹配之前如何忽略所有行?
- scala – Specs2“value in不是String的成员”