我有一个方法:
import scala.reflect.runtime.universe.{TypeTag,typeOf}
def print[T:TypeTag] = println(typeOf[T].typeSymbol.name.toString)
大多数情况下,print[MyClass]
会在调用时打印MyClass
,但有时会打印<refinement>
?
我正在研究一个相当复杂的系统(多个互连的jar,100K代码行),我似乎无法确定是什么决定它是一种行为还是另一种行为。但是,如果我知道<refinement>
意味着什么,或触发了什么,也许我可以?
答案 0 :(得分:2)
优化可以解释为匿名类类型。 E.g。
import scala.reflect.runtime.universe.{TypeTag,typeOf}
def print[T:TypeTag] = println(typeOf[T].typeSymbol.name.toString)
class C
trait T
print[C with T]
type A = C with T
print[A]
两种情况下的输出都是<refinement>
。