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

标签 java reflection annotations

我需要从各个类中检索一些带注释的方法。我正在使用这段代码:

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


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

我找到了 Reflections 类的代码。但是,此代码适用于整个(话虽如此,由于某种原因,代码返回我的项目中的所有带注释的方法,而不仅仅是指定的包)。

但是,我只想从一个特定类获取带注释的方法。我无法弄清楚 Reflections javadoc。

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

最佳答案

您将需要使用输入过滤器来排除其他类。这是一个示例(注意:如果 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);

关于java - 使用 org.reflection 从 java 中的特定类获取带注释的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32487144/

相关文章:

java - 未调用 Crossfield 验证的自定义类级别约束

java - 如何在aspectj中将一个aspect方法与多个方法相关联?

spring - 使用Spring数据Elasticsearch存储库搜索进行别名并保持冲突

java - C中的随机数和Java中的随机数有什么区别吗?

java - 想要在运行时 java 中动态传递 class.getmethod 参数

java - 二进制/合格名称错误?以 : <any? >$ 开头

c# - 获取可以应用于类的所有属性

c# - 使用 GetProperty 获取子属性的最佳方法

java - 如何比较两个对象数组元素?

javascript - Spring : CSS, JS 未加载