反映获取注释的特定类中的所有方法

时间:2018-06-15 10:47:10

标签: java scala reflection

我正在编写一个事件消息处理程序。为了处理反射,我使用Reflections API(https://github.com/ronmamo/reflections)。

每个事件侦听器都是由

注释的方法
public @interface ListenTo {}

并且听众会遵循以下主题:

class Example {
  EventHandler.get.registerListener(this)

  @ListenTo
  def onEvent(e: SomeEvent): Unit 
}

注册监听器的代码如下:

import org.reflections.ReflectionUtils._
private var listeners: mutable.ListBuffer[(Any, List[Method])] = ListBuffer()

def registerListener(obj: Any): Unit = {
  listeners += Tuple2(obj, getAllMethods(obj.getClass, withAnnotation(classOf[ListenTo])).asScala.toList)
}

但是,在注册一个监听器时,该对象被保存在元组中,但没有方法,有人知道为什么吗?

1 个答案:

答案 0 :(得分:1)

通过执行解决

@Retention(RetentionPolicy.RUNTIME)
public @interface ListenTo

对于其他任何人来到这里。