我需要从各种类中检索一些带注释的方法。我使用以下代码:
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);