blob: 2df658df1e333829a646a630346cfb30c61159d5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
object Main {
def mkArray[T <: A](atype: Int) :T#AType = {
(atype match {
case 1 =>
new Array[Int](10)
// Decompiled code: return (Object[])new int[10];
case 2 =>
new Array[Float](10)
}).asInstanceOf[T#AType]
}
def main(args: Array[String]): Unit = {
println(mkArray[I](1))
//java.lang.ClassCastException: [I cannot be cast to [Ljava.lang.Object;
}
}
trait A {
type AType <: AnyRef
}
trait I extends A {
type AType = Array[Int]
}
trait F extends A {
type AType = Array[Float]
}
|