Как получить название всех методов в признаке scala

Мне нужны все имена методов в чертах scala, которые я определил. Я знаю, что это звучит как тривиальная проблема, но я не мог найти никаких ответов, касающихся черты, они все вращались вокруг классов.

Чтобы быть конкретным, мне нужны имена для всех абстрактных методов. Но если я могу получить имя всех методов, независимо от того, абстрактные они или нет, это тоже работает.

Скажи, у меня есть эта черта

trait A { def myDefinedInt: Int = 2 def myAbstractString: String } 

Мне нужен список всех методов (или, желательно, только абстрактные)

Я относительно новичок в Scala, поэтому, хотя я получаю классы и интерфейсы. Черты являются новыми для меня.

Заранее спасибо!

Всего 1 ответ


Вы можете получить все методы с помощью getDeclaredMethods а затем просто отфильтровать абстрактные методы:

 import java.lang.reflect.Modifier

 classOf[A]
    .getDeclaredMethods
    .filter(m =>  Modifier.isAbstract(m.getModifiers))
    .map(_.getName)
    .foreach(println)

Это печатает: myAbstractString .


Есть идеи?

10000