幻想小说网 酷文学 深夜书屋 叮当小说网 找小说网 无限小说网 红尘小说网

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  张云临  阅读(189)  评论(0编辑  收藏  举报

导航