@dimoff66
Кратко о себе: Я есть

Как получить класс из типа, переданного параметром в конструктор другого класса?

Допустим у нас есть case class и мы хотим прочитать его поля.
Мы делаем так

case class Product (name: String, price: Int)
val fields = classOf[Product].getDeclaredFields


А теперь мы хотим передать Product параметром типа в конструктор некоторого универсального класса, который прочитал бы поля переданного типа

class SqlModels[T] {
// Здесь охота прочитать поля из T
}

val sqlInstance = new SqlModels[Product]


Возможно ли это, если да то как?
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
Вам нужен ClassTag

import scala.reflect._

case class Product(name: String, price: Int)

class SqlModels[T : ClassTag] {
  def fields = classTag[T].runtimeClass.getDeclaredFields
}


Но я так понимаю вы хотите реализовать подобие orm. Тогда присмотритесь к TypeTag. Это более мощный аналог.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы