gpt4 book ai didi

java - 为什么 Reflections.getFieldsAnnotatedWith() 不返回任何字段?

转载 作者:行者123 更新时间:2023-11-30 06:20:48 26 4
gpt4 key购买 nike

我遇到了 Reflections 的问题.我正在尝试使用 Reflections#getFieldsAnnotatedWith 方法获取一组 Set 字段,但是当我运行单元测试时,它没有返回任何内容,有人可以告诉我为什么吗? (我正在使用 IntelliJ IDE)

这是我正在使用的类,非常基础。

//The test class run with junit

public class ReflectionTestingTest {

@Test
public void test() {
Reflections ref = new Reflections(AnnotatedClass.class);
assertEquals(2, ref.getFieldsAnnotatedWith(TestAnnotation.class).size());
Set<Field> fields = ref.getFieldsAnnotatedWith(TestAnnotation.class);
}
}

//The class with the annotated fields I want to have in my Set.

public class AnnotatedClass {

@TestAnnotation
public int annotatedField1 = 123;

@TestAnnotation
public String annotatedField2 = "roar";
}

//And the @interface itself

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface TestAnnotation {}

测试失败并显示以下消息:

junit.framework.AssertionFailedError: 
Expected :2
Actual :0

最佳答案

您的 AnnotatedClass 应该有用 @TestAnnotation 注释的字段。然后您的代码将返回 2

public class AnnotatedClass {

@TestAnnotation
public int annotatedField1 = 123;

@TestAnnotation
public String annotatedField2 = "roar";

}

现在,要查询字段和方法,您需要在创建 Reflections 对象时指定扫描仪。此外,Reflections 的用法应该是:

Reflections ref = new Reflections("<specify package name here>", new FieldAnnotationsScanner());

关于java - 为什么 Reflections.getFieldsAnnotatedWith() 不返回任何字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21308513/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com