这可能是一个非常愚蠢的问题,但无论如何我都会尝试。我正在尝试将通配符与类型化类一起使用,以便获取它的属性。
我正在尝试提供一个 sintax(类似 DSL)来创建对象,这些对象将根据其类型参数化处理传入的消息。我真的很喜欢 sintax 看起来像这样:
// Types of message
trait TypeMessage
case class TypeMessage1 extends TypeMessage{
val a : String,
val b : Int
}
case class TypeMessage2 extends TypeMessage{
val c : Double,
val d : String
}
// Here is the problem
class TreatMsg[T <: TypeMessage] {
// I'm using a random sintax here, just for ilustration
def getParamInfo( variable : ?? ) = {
println("name: " + variable.name + " value: " + variable.val + " type: " + variable.val.getClass)
}
}
object TreatMsg{
def apply[T <: TypeMessage] = new TreatMsg[T]
}
// Creating actors
TreatMsg[TypeMessage1].getParamInfo(_.a)
TreatMsg[TypeMessage2].getParamInfo(_.d)
那么,如何让这个通配符工作呢?我的意思是,我希望“getParamInfo()”函数只接受传递给 TreatMsg 的类中的属性。我有一个使用反射的解决方案,但我想摆脱这种反射。任何的想法?
谢谢!