Чтобы удалить имена окружающих объектов и хвост $, достаточно сделать
res1.split("\\$").last
Ответ 2
Если вы объявите его как case object, а не только object, то он автоматически расширит черту Product, и вы можете вызвать productPrefix для получения имени объекта:
scala> case object Thingy
defined module Thingy
scala> Thingy.productPrefix
res4: java.lang.String = Thingy
Ответ 3
Я не знаю, какой путь правильный, но это может быть достигнуто с помощью Scala reflection: