我们有一个可以返回任何内容的函数:
def func: AnyRef
我们需要检查返回值是否为
Tuple2[String, String]
或
List[Tuple2[String, List[String]]]
或
List[Tuple2[String, List[Int]]]
或其他任何内容。
这样做的正确方法是什么?
答案 0 :(得分:2)
如果func
是您无法控制的,我建议您创建一种数据类型来表示func
可能返回的内容,并简单地从func
返回}。它违背了类型安全的想法,以及#34;任何东西",所以我的答案将是帮助恢复类型安全。
sealed trait FuncReturnType
case class Thing1(data: (String,String)) extends FuncReturnType
case class Thing2(data: List[(String, List[String])]) extends FuncReturnType
case class Thing3(data: List[(String, List[Int])]) extends FuncReturnType
...
def func: FuncReturnType
希望Thing
类的数量不是无限的。
这样,当您调用func时,您可以将其返回值与各种thing
类进行匹配,并且您不必担心类型擦除(如果您不喜欢类型擦除,则必须这样做) #39; t以这种方式重构)