Skip to content

Instantly share code, notes, and snippets.

@dcaoyuan
Created June 12, 2011 12:55
Show Gist options
  • Save dcaoyuan/1021516 to your computer and use it in GitHub Desktop.
Save dcaoyuan/1021516 to your computer and use it in GitHub Desktop.
Type inference for Array's element
scala> def newa[T:Manifest](e: Class[T]) = {println(manifest[T].erasure); new Array[T](10)}
newa: [T](e: Class[T])(implicit evidence$1: Manifest[T])Array[T]
scala> newa(classOf[Byte])
byte
res45: Array[Byte] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
scala> val a = classOf[Byte]
a: java.lang.Class[Byte] = byte
scala> newa(a)
byte
res46: Array[Byte] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
scala> def c(i:Int): Class[_] = i match {case 1 => classOf[Byte]; case 2 => classOf[String]}
c: (i: Int)Class[_]
scala> c(1)
res49: java.lang.Class[_] = byte
scala> newa(c(1))
class java.lang.Object
res50: Array[_] = Array(null, null, null, null, null, null, null, null, null, null)
scala> c(2)
res54: java.lang.Class[_] = class java.lang.String
scala> newa(c(2))
class java.lang.Object
res53: Array[_] = Array(null, null, null, null, null, null, null, null, null, null)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment