gpt4 book ai didi

java - 使用 Java 反射访问测试用例中的 protected 方法

转载 作者:IT老高 更新时间:2023-10-28 20:51:07 26 4
gpt4 key购买 nike

我正在尝试使用 Java 反射获取和调用驻留在不同类和不同包中的 protected 方法。

包含 protected 方法的类:

package com.myapp;

public class MyServiceImpl {

protected List<String> retrieveItems(String status) {
// Implementation
}
}

调用类:

package xxx.myapp.tests;

import com.myapp.MyServiceImpl;

public class MyTestCase {

List<String> items;

public void setUp() throws Exception {

MyServiceImpl service = new MyServiceImpl();
Class clazz = service.getClass();

// Fails at the next line:
Method retrieveItems = clazz.getDeclaredMethod("retrieveItems");

// How to invoke the method and return List<String> items?
// tried this but it fails?
retrieveItems.invoke(clazz, "S");
}
}

编译器抛出这个异常:

java.lang.NoSuchMethodException: com.myapp.MyServiceImpl.retrieveItems()

最佳答案

您的代码的问题在于 getDeclaredMethod 函数通过名称和参数类型查找函数。随叫随到

Method retrieveItems = clazz.getDeclaredMethod("retrieveItems");

代码将寻找不带参数的方法retrieveItems()。你正在寻找的方法确实需要一个参数,一个字符串,所以你应该调用

Method retrieveItems = clazz.getDeclaredMethod("retrieveItems", String.class);

这将告诉 Java 搜索 retrieveItems(String),这就是您要查找的内容。

关于java - 使用 Java 反射访问测试用例中的 protected 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4664192/

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