我对Scala和H2O很新。我知道Scala中有扩展类。但我想要做的是有两个具有相同名称但参数类型不同的类。
我希望当我调用test时,如果我将String或Double参数放入其中。该类将识别我输入的数据类型并运行正确的函数。谢谢你的帮助!
答案 0 :(得分:3)
您可以对您的课程进行参数化,使其成为通用的':
class test[T](a: T, b: T) extends MRTask {}
因此,当您在现实生活中使用此类时,将根据您的输入自动确定T
类型。
对于test("str", "str" )
,T
将为String
如果您想使用String
和Double
来限制类型,则不能同时使用这两个边界。你必须为这两个找到共同的父类。它是Any
。它对你没什么帮助。
对于前。你需要实现一些依赖于类型的方法应该应用不同的行为。为此,我建议您使用模式匹配。
case class test[T <: Any](a :T, b: T) {
def foo (): T = {
a match {
case d: Double => d
case s: String => s
}
}
}