如何使用URLClassLoader加载本地的Class文件,程序设计中可以使用动态加载策略
方法/步骤
-
1
定义一个接口类方法
代码:我的包名称叫interFace
/**
* Alipay.com Inc.
* Copyright (c) 2004-2015 All Rights Reserved.
*/
package interFace;
/**
*
* @author wb-lilei.u
*/
public interface commInterFace {
public void sayHello(String hello);
}
-
2
2.定义实现类
代码:包名称为impl(注意这里的包后面会用到)
/**
* Alipay.com Inc.
* Copyright (c) 2004-2015 All Rights Reserved.
*/
package impl;
import interFace.commInterFace;
/**
*
* @author wb-lilei.u
* @version $Id: commInterFaceImpl.java, v 0.1 2015年11月19日 下午1:54:31 wb-lilei.u Exp $
*/
public class commInterFaceImpl implements commInterFace {
/**
* @see interFace.commInterFace#sayHello(java.lang.String)
*/
@Override
public void sayHello(String hello) {
System.out.println("hello" + hello);
}
}
-
3
在命令行提示符(cmd)编译这两个文件:一定要一起编译单独编译实现类方法会不通过
javac impl\*.java interFace\*.java
-
4
编写测试类方法:
import interFace.commInterFace;
import java.net.URL;
import java.net.URLClassLoader;
/**
* Alipay.com Inc.
* Copyright (c) 2004-2015 All Rights Reserved.
*/
/**
*
* @author wb-lilei.u
*/
public class testLoadClass {
/**
*
* @param args
*/
public static void main(String[] args) {
try {
URLClassLoader loader = new URLClassLoader(
new URL[] { new URL("file:D:\\workspaces\\") });
//这里的D:\\workspaces\\是文件的根地址
Class<commInterFace> myClass = (Class<commInterFace>) loader
.loadClass("impl.commInterFaceImpl");
//impl.commInterFaceImpl是后面具体的地址因为一定要包含impl这一段这
//是因为在创建的时候使用了impl这个包所以一定要一起
myClass.newInstance().sayHello("ssssssssssssss");
//利用Java反射机制创建实例测试方法
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
END
文章评论