考虑这两行:
return loadMethod.invoke(botScriptLoader, file.getName().replaceFirst("\\.class", "")).getClass();
return (Class<?>) loadMethod.invoke(botScriptLoader, file.getName().replaceFirst("\\.class", ""));
当我使用第一行运行我的应用程序时,它不能按预期工作。当我使用第二行运行我的应用程序时,它确实可以正常工作。我不觉得这背后的代码是相关的,因为我的观点是这两行之间的行为是不同的。为什么他们的行为不同?getClass() 返回 Class 并且类型转换将对象转换为 Class - 所以最终结果应该是相同的。但是,两者的行为方式不同。