Scala反射API Type.dealias有什么作用?

Tom*_*Tom 2 scala scala-reflect

我有一个简单的代码,

case class Person(name: String, age:Int)
import scala.reflect.runtime.universe._
val t1 = typeOf[Person]
val t2 = t1.dealias
println(t1 == t2)
Run Code Online (Sandbox Code Playgroud)

它输出为true,所以我想问一下Type.dealias的用途是什么?我什么时候应该使用它?一些代码示例会有所帮助

我之所以这样问,是因为当我阅读spark代码时ScalaReflection,它几乎总是dealias在使用类型之前使用

Ale*_*nov 5

类型别名看起来像

type Alias = Person
Run Code Online (Sandbox Code Playgroud)

它声明Alias与相同的新类型Person

dealias解决这些别名,因此typeOf[Alias].dealias将返回typeOf[Person]。因为Person不是别名,typeOf[Person].dealias所以不执行任何操作。

另请注意:

可以使用=:=检查类型是否相等。重要的是要注意==不应用于比较类型是否相等-在存在类型别名的情况下==不能检查类型是否相等,而=:=可以。