我有一个简单的代码,
case class Person(name: String, age:Int)
import scala.reflect.runtime.universe._
val t1 = typeOf[Person]
val t2 = t1.dealias
println(t1 == t2)
它输出为true,所以我想问一下Type.dealias的用途是什么?我什么时候应该使用它?一些代码示例会有所帮助
我之所以这样问是因为,当我阅读火花代码
ScalaReflection
时,在使用类型之前几乎总是使用dealias
最佳答案
类型别名看起来像
type Alias = Person
它声明与
Alias
相同的新类型Person
。dealias
解析这些别名,以便typeOf[Alias].dealias
将返回typeOf[Person]
。因为Person
不是别名,所以typeOf[Person].dealias
不执行任何操作。另请注意:
Type Equality can be checked with =:=. It's important to note that == should not be used to compare types for equality-- == can't check for type equality in the presence of type aliases, while =:= can.