названия полей из класса (и case и обычного тоже)
написал такое
case class Pers(name: String, age: Int)
class Car(name: String)
val p = Pers("Ivan", 2)
val c = new Car("BMV")
import scala.reflect.runtime.universe._
def getListOfFields(p: Object): List[String] = {
val m = runtimeMirror(p.getClass.getClassLoader)
val symbol = m.classSymbol(p.getClass).typeSignature.typeSymbol.asClass
val ctor = symbol.primaryConstructor
val paramList = ctor.typeSignature.paramLists
paramList.flatten.map(s => s.name.toString)
}
getListOfFields(p)
getListOfFields(c)
//val res3: List[String] = List(name, age)
//val res4: List[String] = List(name)
Это же можно как-то проще написать? А то как-то слишком cumbersome
Но зато так работает
Shapeless
А какая изначально задача решается?
https://www.scala-lang.org/api/current/scala/Product.html#productElementNames:Iterator[String]
Обсуждают сегодня