2
ClassManifest [T]是在Scala中主要用于创建阵列[T]秒。我可以为参数化类型构造一个ClassManifest而不需要清单类型参数吗?
林感兴趣其中阵列类型T不是原始的情况,但一些类,它类型构造,即AnyRef的子类型。然后,我可以为参数化类型构造一个ClassManifest,而不必为其类型参数进行清单化?
class Foo[A]
def getManifestFor[A]: ClassManifest[Foo[A]] = ???
由于富是非原始的,似乎JVM阵列存储将引用数组,其大小/存储器布局是由擦除类型参数不受影响(例如上述A)。所以在理论上似乎是可能的,但我不知道如何在Scala中编写它。
一些实验已经回答了我的问题: '高清manifestFor [A]:ClassManifest [富[A] =隐含[ClassManifest [富[A]]]'。 '用于隐式ClassManifest implicitly'搜索[美孚[A]]。我想编译器可以提供一个由于我上面提到的原因。 现在,回想起来这似乎是显而易见。我最初感到困惑,因为在我的应用程序中,我对类型不小心,并且使用了Manifest [T],而不是ClassManifest [T]。 舱单[T]意味着更高的精确度; T型的所有部件都必须是已知的。即,这是一个编译错误: 'def manifestFor [A]:Manifest [Foo [A]] =隐式[Manifest [Foo [A]]]' – 2012-01-13 01:54:15
为什么隐式解决方案不合适? – Edmondo1984 2012-06-28 14:42:28