23 lines
419 B
Scala
23 lines
419 B
Scala
object Magic {
|
|
abstract class O[X,Y] {
|
|
type T >: X <: Y;
|
|
class I { def magic(v: T): T = v; }
|
|
}
|
|
def magic[X,Y](v: X): Y = {
|
|
val o: O[X,Y] = null;
|
|
val i: o.I = new o.I();
|
|
i.magic(v);
|
|
}
|
|
}
|
|
|
|
object Test {
|
|
def main(args: Array[String]): Unit = {
|
|
try {
|
|
val i: Int = Magic.magic("42");
|
|
Console.println(i);
|
|
} catch {
|
|
case ex: Throwable => ex.printStackTrace()
|
|
}
|
|
}
|
|
}
|