【问题标题】:Why asInstanceOf doesn't initiate implicit conversion? [duplicate]为什么 asInstanceOf 不启动隐式转换? [复制]
【发布时间】:2014-07-25 14:34:15
【问题描述】:

我有一个带有伴随对象的案例类。 我在伴生对象中有隐式转换方法。

case class Foo(p:T)

object Foo {
  implicit def Foo2Bar(foo: Foo): Bar = new Bar(doSmth(foo.p))
}

我有一个带有Object 类型参数的方法。我想在那里传递一个Bar 的实例。 不幸的是,以下代码不会进行转换,而是抛出ClassCastException

import Foo._
...
val foo = createFoo()
bazz(foo.asInstanceOf[Bar])

同时,下一个(更详细的)代码完成这项工作:

import Foo._
...
val foo = createFoo()
val bar: Bar = foo 
bazz(bar)

任何想法为什么以前的代码不起作用?

【问题讨论】:

标签: scala casting implicit-conversion implicit


【解决方案1】:

asInstanceOf 仅处理子类型关系,但定义隐式转换不会创建子类型关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 2013-03-20
    • 1970-01-01
    • 2013-10-05
    • 2011-12-10
    相关资源
    最近更新 更多