什么是“ “通过TypeTag获得类型?

问题描述 投票:0回答:1

我有一个方法:

import scala.reflect.runtime.universe.{TypeTag,typeOf}

def print[T:TypeTag] = println(typeOf[T].typeSymbol.name.toString)

大多数时候,print[MyClass]在调用时打印MyClass,但有时,它打印<refinement>

我正在研究一个相当复杂的系统(多个互连的jar,100K代码行),而我似乎无法确定是什么决定它是一种行为还是另一种行为。但是,如果我知道<refinement>意味着什么,或者是什么触发了那个,也许我可以?

scala reflection implicits
1个回答
2
投票

细化可以解释为匿名类类型。例如。

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>

© www.soinside.com 2019 - 2024. All rights reserved.