重写方法中的方法参数注释



有没有办法在子类中获取方法的参数注释?我尝试使用getParameterAnnotations,但它不起作用。我写了一个测试类来演示:

public class ParameterAnnotationInheritanceTest {
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.PARAMETER)
    @Inherited
    public @interface MockAnnotation {
    }
    public class A {
        public void test(@MockAnnotation String value) {
        }
    }
    public class B extends A {
        @Override
        public void test(String value) {
        }
    }
    @Test
    public void TestA() throws NoSuchMethodException, SecurityException {
        Method AMethod = A.class.getMethod("test", String.class);
        Annotation[][] AMethodParameterAnnotations = AMethod.getParameterAnnotations();
        assertTrue(Arrays.asList(AMethodParameterAnnotations[0]).size() > 0);
    }
    @Test
    public void TestB() throws NoSuchMethodException, SecurityException {
        Method BMethod = B.class.getMethod("test", String.class);
        Annotation[][] BMethodParameterAnnotations = BMethod.getParameterAnnotations();
        assertTrue(Arrays.asList(BMethodParameterAnnotations[0]).size() > 0);
    }
}

提前感谢!

它不起作用,因为子类B中的测试方法与超级类中的不同。通过重写它,您实际上定义了一个新的测试方法,该方法将被调用,而不是原来的方法。如果你像这样定义你的孩子类

public class B extends A {
}

并且再次运行您的代码,它工作得很好,因为它是被调用的继承测试方法,据我所知,这正是您想要的。

相关内容

  • 没有找到相关文章

最新更新