使用org.reflection从java中的特定类获取带注释的方法



我需要从各种类中检索一些带注释的方法。我使用以下代码:

    Reflections reflections = new Reflections(
            new ConfigurationBuilder()
            .setUrls(ClasspathHelper.forPackage("my.package"))
            .setScanners(new MethodAnnotationsScanner())
            );

    Set<Method> resources =
        reflections.getMethodsAnnotatedWith(org.testng.annotations.Test.class);

我找到了反射类的代码。然而,这段代码是针对整个package的(也就是说,由于某种原因,代码返回我的项目中所有带注释的方法,而不仅仅是指定的包)。

但是,我只想从一个特定的类中获得带注释的方法。

如何更改构造函数,以便只返回特定类的带注释的方法?

您将需要使用一个输入过滤器来排除其他类。下面是一个例子(注意:如果MyClass中有嵌套的类,这些类也会被匹配)

    final String className = MyClass.class.getCanonicalName();
    final Predicate<String> filter = new Predicate<String>() {
        public boolean apply(String arg0) {
            return arg0.startsWith(className);
        }
    };
    Reflections reflections = new Reflections(
            new ConfigurationBuilder()
            .setUrls(ClasspathHelper.forClass(MyClass.class))
            .filterInputsBy(filter)
            .setScanners(new MethodAnnotationsScanner()));
    Set<Method> resources =
            reflections.getMethodsAnnotatedWith(org.testng.annotations.Test.class);

相关内容

  • 没有找到相关文章

最新更新