在scala 2.10.4下运行以下脚本。我期待a.classOp的结果应该是MyPage。为什么没有?scala隐式参数类型推断
scala> trait PageModel {
| def classOp[T](implicit manifest: Manifest[T]) {
| println("Class: " + manifest.runtimeClass.getName)
| }
| }
defined trait PageModel
scala> class MyPage extends PageModel
defined class MyPage
scala> val a = new MyPage
a: MyPage = [email protected]
scala> a.classOp
Class: scala.runtime.Nothing$
编辑:
我觉得我得到了答案。谢谢! 但是,在2.9.3上运行相同的代码给了我一个java.lang.Object是非常有趣的。它应该表现如何?我在2.9.3中也看到了NoManifest。
scala> trait PageModel{
| def classOp[T](implicit m: Manifest[T]) {
| println("Class: " + manifest[T].erasure.getName)
| }
| }
defined trait PageModel
scala> class MyPage extends PageModel
defined class MyPage
scala> val a = new MyPage
a: MyPage = [email protected]
scala> a.classOp
Class: java.lang.Object
感谢您的回答! – 2014-12-02 21:04:10