我构建了一个Android应用程序。
我使用广告平台,但我不确定我是否愿意坚持下去(也许我会决定稍后更改)。
为此,我想创建一个界面和一个实现它的类,调用平台的广告。
我的想法是,稍后我可以从我的服务器(使用反射)加载另一个类文件替换前一个。这样,我就可以“动态”改变广告平台(例如 - Admob / Airpush)。
有人知道如何使用Java加载远程类吗?
你有任何代码示例吗?
答案 0 :(得分:1)
您需要创建自己的ClassLoader,查看How to use URLClassLoader to load a *.class file?
以下是一个示例(来自http://www.programcreek.com/java-api-examples/index.php?api=java.net.URLClassLoader,还有其他人使用托管网址):
private void invokeClass(String path, String name, String[] args) throws
ClassNotFoundException,
NoSuchMethodException,
InvocationTargetException,
MalformedURLException,
InterruptedException,
IllegalAccessException {
File f = new File(path);
URLClassLoader u = new URLClassLoader(new URL[]{f.toURI().toURL()});
Class c = u.loadClass(name);
Method m = c.getMethod("main", new Class[]{args.getClass()});
m.setAccessible(true);
int mods = m.getModifiers();
if (m.getReturnType() != void.class || !Modifier.isStatic(mods) || !Modifier.isPublic(mods)) {
throw new NoSuchMethodException("main");
}
m.invoke(null, new Object[]{args});
m = null;
System.gc(); // uh-oh
}