我想创建一个可以动态加载插件的应用程序,但我没有在互联网上找到任何文献.
困难的是:我事先不知道这个名字.
例如,我有一个插件界面:
public interface Plugin {
public static Plugin newPlugin();
public void executePlugin(String args[]);
}
Run Code Online (Sandbox Code Playgroud)
这样在jar文件中实现插件的每个Class 都在列表中实例化:
Method method = classToLoad.getMethod ("newPlugin");
mylist.add(method.invoke(null);
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
我使用一个带有不同参数的函数的(C)库,但在出现错误时总是返回大于零的int:
int functionA(int param1, char param2); /* return an error code on failure, 0 otherwise */
int functionB(LIB_BOOLEAN param1); /* return an error code on failure, 0 otherwise */
// ...
Run Code Online (Sandbox Code Playgroud)
我想将它们全部变为异常准备:
if (functionA(param1, param2) > 0)
{ throw std::runtime_error("Method failed"); }
Run Code Online (Sandbox Code Playgroud)
是否可以编写一个模板来为所有方法执行一次?
编辑:我的想法是避免每次使用它们时检查每个函数的结果.
我找到了一个 C++ 代码,我们将初始化为最大值的 unsigned int 32 转换为有符号 int 并期望它是-1. 它在经过测试的编译器上运行良好,但它真的可移植吗?
int GetBusinessDataID()
{
u32_t id = ~0;
// Some code that may return a valid ID.
return id; // Here we expect to return -1.
}
Run Code Online (Sandbox Code Playgroud)