KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
A case classes copy() method is supposed to make an identical copy of the instance, plus replacing any fields by name. This seems to fail when the case class has type parameters with manifests. The copy loses all knowledge of the types of its parameters. case class Foo[+A : Manifest](a: A) { // Capture manifest so we can observe it // A demonstration with collect would work equally well def myManifest = implicitly[Manifest[_ <: A]] } case class Bar[A <: Foo[Any]](foo: A) { // A simple copy of foo def fooCopy = foo.copy() } val foo = Foo(1) val bar = Bar(foo) println(bar.foo.myManifest) // Prints "Int" println(bar.fooCopy.myManifest) // Prints "Any" Why does Foo.copy lose the manifest on the parameters and how do I make it retain it?
Tags (comma-separated)
Save Edits
Cancel