Question: Question:
We become indebted to. I'm new to scala. I'm worried because I don't understand the reason for the following code operation.
scala> case class MyVector[A]() {
def test(init:A) = {
println("type=" + init.getClass)
}
}
scala> (new MyVector[Int]()).test(3)
type=class java.lang.Integer
Since I passed Int, I want it to be Int instead of Integer. .. ..
I look forward to working with you.
Answer: Answer:
It depends on how the JVM works.
First and foremost, the JVM does not allow primitive types to be specified as type parameters. Therefore, in Java, if you specify int
as a type parameter, it is automatically replaced with Integer
, which is a non-primitive type corresponding to int
, at compile time.
This assumption cannot be overturned even in Scala using the JVM. So in the illustrated code, A
(= init.getClass
) is an Integer
instead of an Int
.