0
來自StackOverflow的Scala專家。我可以從Scala中的註釋成員測量註釋泛型類型嗎?
在示例代碼下面,我重現了我正在處理的一個項目上的行爲。我應該能夠推斷/測量當它出現在類字段成員中時定義的註釋「武器」泛型類型。
import scala.reflect.runtime.universe._
import scala.annotation.StaticAnnotation
class Reflection
object Reflection {
def reflect[T: TypeTag](x: Class[T]): Type = {
typeOf[T]
}
def main(args: Array[String]) {
var tpe = reflect(classOf[Hero])
for (member <- tpe.members)
for (annotation <- member.annotations)
annotation.tpe match {
case t if t <:< typeOf[weapon[_]]
=> println(s"found weapon member: $member")
case t if t <:< typeOf[action]
=> println(s"found action member: $member")
}
}
}
class weapon[T <: WeaponType](x: String = null) extends StaticAnnotation
class action extends StaticAnnotation
class WeaponType(damage: Int)
case class Knife extends WeaponType(12)
class Hero {
@weapon[Knife] var weapon: String = _
@action def hitWithKnife() {
}
}
然而,在我提供的示例代碼,我可能無法避免REPL打印一個奇怪的日誌作爲
[] ?_$1 setInst sample.Knife
在此先感謝
編輯
'@alexwriteshere'正確地解釋了日誌讓我無聊的原因。他讓我覺得我的問題很困惑。
問題
它可以推斷/測量在一類構件上@weapon定義的T形(如在武器部件從我的英雄類看到的)。
感謝您的快速解釋。我正在尋找這個日誌問題沒有成功。但是我想推斷我的英雄類中的@weapon上設置的T類型。我想我沒有解釋這個問題。 – Miere
添加了獲取註釋參數的方式。這是你在找什麼? –
很多謝謝老兄!有用。 – Miere