我有一个方法:
import scala.reflect.runtime.universe.{TypeTag,typeOf}
def print[T:TypeTag] = println(typeOf[T].typeSymbol.name.toString)
大多数时候,print[MyClass]
在调用时打印MyClass
,但有时,它打印<refinement>
?
我正在研究一个相当复杂的系统(多个互连的jar,100K代码行),而我似乎无法确定是什么决定它是一种行为还是另一种行为。但是,如果我知道<refinement>
意味着什么,或者是什么触发了那个,也许我可以?
细化可以解释为匿名类类型。例如。
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>
。