scala2.10.x case classes cannot have more than 22 parameters

问题

这个错误出现在case class参数超出22个的时候。

case classes cannot have more than 22 parameters

在scala 2.11.x版本以下时case class 的参数最多为22个,如果超过这个参数又不能升级时(比如目前spark依赖于2.10.x)要怎么办?

解决方案

这里举个26个参数的例子,其余情况依此类推

class ABC (
            a : String,
            b : String,
            c : String,
            d : Long,
            e : Long,
            f : Map[String,String],
            g : List[String],
            h : List[String],
            i : List[String],
            j : List[String],
            k : List[String],
            l : List[String],
            m : List[String],
            n : List[String],
            o : List[String],
            p : List[String],
            q : List[String],
            r : List[String],
            s : List[String],
            t : List[String],
            u : List[String],
            v : List[String],
            w : List[String],
            x : List[Map[String,String]],
            y : List[Map[String,String]],
            z : List[Map[String,String]]) extends Product with scala.Serializable {

  def productElement(n: Int) = n match {
    case 0 => a
    case 1 => b
    case 2 => c
    case 3 => d
    case 4 => e
    case 5 => f
    case 6 => g
    case 7 => h
    case 8 => i
    case 9 => j
    case 10 => k
    case 11 => l
    case 12 => m
    case 13 => n
    case 14 => o
    case 15 => p
    case 16 => q
    case 17 => r
    case 18 => s
    case 19 => t
    case 20 => u
    case 21 => v
    case 22 => w
    case 23 => x
    case 24 => y
    case 25 => z
  }

  def canEqual(that: Any) = that.isInstanceOf[ABC]
  def productArity = 26
}

//之后使用
new ABC(...)解决该问题

posted on 2015-08-12 22:40  毛小娃  阅读(137)  评论(0编辑  收藏  举报

导航