В первом приближении вы можете сделать
def isObject(c: Class[_]): Boolean = c.getName.endsWith("$")
, потому что анонимный класс, созданный для одиночного object y
, имеет имя y$
, и обычные анонимные классы (такие как new AnyRef {}
) заканчиваютсявместо $<number>
Но также допустимо создать class y$
, что дало бы ложное срабатывание;однако такие имена редко встречаются на практике.
Использование scala-refle должно позволить получить более точный ответ.