使用 org.reflection 从 java 中的特定 class 获取带注释的方法
Get annotated methods from a specific class in java, with org.reflection
我需要从各种 classes 中检索一些带注释的方法。我正在使用此代码:
Reflections reflections = new Reflections(
new ConfigurationBuilder()
.setUrls(ClasspathHelper.forPackage("my.package"))
.setScanners(new MethodAnnotationsScanner())
);
Set<Method> resources =
reflections.getMethodsAnnotatedWith(org.testng.annotations.Test.class);
我找到了思考的代码 class。但是,此代码适用于整个 package
(话虽如此,由于某种原因,代码 returns 我项目中所有带注释的方法,而不仅仅是指定的包)。
但是,我只想从一个特定的 class 中获取带注释的方法。我无法对 Reflections javadoc 做出正面或反面的判断。
如何更改构造函数以便仅返回特定 class 中的注释方法?
您将需要使用输入过滤器来排除其他 类。这是一个示例(注意:如果 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);
我需要从各种 classes 中检索一些带注释的方法。我正在使用此代码:
Reflections reflections = new Reflections(
new ConfigurationBuilder()
.setUrls(ClasspathHelper.forPackage("my.package"))
.setScanners(new MethodAnnotationsScanner())
);
Set<Method> resources =
reflections.getMethodsAnnotatedWith(org.testng.annotations.Test.class);
我找到了思考的代码 class。但是,此代码适用于整个 package
(话虽如此,由于某种原因,代码 returns 我项目中所有带注释的方法,而不仅仅是指定的包)。
但是,我只想从一个特定的 class 中获取带注释的方法。我无法对 Reflections javadoc 做出正面或反面的判断。
如何更改构造函数以便仅返回特定 class 中的注释方法?
您将需要使用输入过滤器来排除其他 类。这是一个示例(注意:如果 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);