Scala конструктор класса множество полей - PullRequest
0 голосов
/ 18 июня 2020

У меня есть класс с основным конструктором, который принимает более 50 полей:

class HBaseEve   (val rowKey: String,
                 ...
                  val customer: String,
                 ...
                  val managedEntityKey: String,
                 ...
                  val withdrawalReasonForWithdrawal: String)

В моем сопутствующем объекте я объявил метод под названием parse для создания объекта HBaseEve из записи в таблице HBase:

    object HBaseEve {
final val COLUMN_FAMILY = "cr"
  override def parse(result: Result): HBaseEve  = {
    if (result.getRow != null)
      new HBaseEve   (
        Bytes.toString(result.getRow),
      ...
        Bytes.toString(result.getValue(HBaseEve.COLUMN_FAMILY.getBytes(), "customer".getBytes())),
        ...
Bytes.toString(result.getValue(HBaseEve.COLUMN_FAMILY.getBytes(), "managedEntityKey".getBytes())),
        ...
        Bytes.toString(result.getValue(HBaseEve.COLUMN_FAMILY.getBytes(), "withdrawalReasonForWithdrawal".getBytes()))
      )
    else null
  }

Однако этот метод синтаксического анализа не очень элегантен, потому что в моем классе более 50 полей, которые нужно заполнить вручную. Я не знаю, как заменить этот метод синтаксического анализа другим более эффективным и практичным методом.

Есть идеи по этому поводу? Я искал около scala. Reflection, но у меня нет идеи, как это использовать. В любом случае, я открыт для любых идей, пожалуйста.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...