Как получить название всех методов в признаке scala - PullRequest
4 голосов
/ 17 мая 2019

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

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

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

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

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

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

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

1 Ответ

6 голосов
/ 17 мая 2019

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

 import java.lang.reflect.Modifier

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

Он печатает: myAbstractString.

...