In Scala, how do I get the *name* of an `object` (not an instance of a class)?

Scoobie picture Scoobie · Oct 21, 2012 · Viewed 15.3k times · Source

In Scala, I can declare an object like so:

class Thing

object Thingy extends Thing

How would I get "Thingy" (the name of the object) in Scala?

I've heard that Lift (the web framework for Scala) is capable of this.

Answer

DaoWen picture DaoWen · Oct 21, 2012

If you declare it as a case object rather than just an object then it'll automatically extend the Product trait and you can call the productPrefix method to get the object's name:

scala> case object Thingy
defined module Thingy

scala> Thingy.productPrefix
res4: java.lang.String = Thingy