从Style.jar中加载程序所需要的样式
其中Style.jar中有一个MyStyle的类实现了一个StyleInterface的接口
接口代码如下:
public interface StyleInterface {
public String getStyle();
}
MyStyle类的代码如下:
public class MyStyle implements StyleInterface{
@Override
public String getStyle() {
return "我是从MyStyle中得到的样式代码!";
}
}
然后,在记事本主程序程序中通过如下方式调用:
String class_path = "MyStyle";//Jar中的所需要加载的类的类名
String jar_path = "file://D:\Style.jar";//jar所在的文件的URL
try {
ClassLoader cl = new URLClassLoader(new URL[]{new URL(jar_path)});//从Jar文件得到一个Class加载器
Class<?> c = cl.loadClass(class_path);//从加载器中加载Class
StyleInterface sif = (StyleInterface) c.newInstance();//从Class中实例出一个对象
System.out.println(sif.getStyle());//调用Jar中的类方法
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
注意:
-
class_path必须是完整类名(连同所在的包的路径),例如:在myjava.test下有一个类Test,则Test的完整类名是:myjava.test.Test.而如果是在"缺省包"下的类,就可以省略包的路径(本来就没有)。
-
jar_path不是Jar文件的路径,而是Jar文件的URL。
通常可以这样表示:"file://Jar文件的绝对路径"
-
从Class中实例出对象时,一定要把Object强制转换成实现指定接口的类,就想例子中的StyleInterface