У меня есть класс с основным конструктором, который принимает более 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, но у меня нет идеи, как это использовать. В любом случае, я открыт для любых идей, пожалуйста.
Спасибо