gpt4 book ai didi

java - 使用反射调用方法时出现 NoSuchMethodException

转载 作者:行者123 更新时间:2023-12-01 19:44:48 31 4
gpt4 key购买 nike

我有以下具有静态方法的类,该方法采用 Class<? extends FunctionProvider> 类型的参数并生成一个 FunctionDescriptor。

public class NoInputFunctionDescriptorFactory {

public static FunctionDescriptor getFunctionDescriptorForClass(Class<? extends FunctionProvider> clazz) {
FunctionDescriptor functionDescriptor = DescriptorFactory.getFactory().createFunctionDescriptor();
functionDescriptor.setType("class");
functionDescriptor.setName(clazz.getSimpleName());
Map conditionArgs = functionDescriptor.getArgs();
conditionArgs.put("class.name", clazz.getName());
return functionDescriptor;
}

}

我从一个辅助方法调用此类,该方法采用两个 String 类型的参数、工厂类名(例如 com.example.NoInputFunctionDescriptorFactory )和类的类名,扩展 FunctionProvider (例如 com.example.CreateIssuesPostFunction )。这些参数是从 yaml 模型中读取的,因此它们的类型为 String .

 private FunctionDescriptor createFunctionDescriptorFactory(String factoryClassNameString, String functionProviderClassNameString) {
try {
Class<? extends FunctionProvider> functionProviderClass = (Class<? extends FunctionProvider>) Class.forName(functionProviderClassNameString);
Class<?> factoryClass = Class.forName(factoryClassNameString);
Method method = factoryClass.getMethod("getFunctionDescriptorForClass", FunctionProvider.class);
return (FunctionDescriptor) method.invoke(null, functionProviderClass);
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
return null;
}
}

当我调用createFunctionDescriptorFactory()时方法我总是最终得到 NoSuchMethodException :

java.lang.NoSuchMethodException: com.example.NoInputFunctionDescriptorFactory.getFunctionDescriptorForClass(com.opensymphony.workflow.FunctionProvider)

有人可以解释一下我错在哪里吗?

最佳答案

当我将反射调用更改为

时,一切正常

Method method = factoryClass.getMethod("getFunctionDescriptorForClass", Class.class);

使用java.lang.Class

关于java - 使用反射调用方法时出现 NoSuchMethodException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59136439/

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