java类加载器-(1)
2015-09-04 12:12
471 查看
package vmrun; import java.io.InputStream; public class ClassLoadTest { public static void main(String [] args) throws Exception{ ClassLoader myLoader = new ClassLoader() { @Override public Class<?> loadClass(String name) throws ClassNotFoundException { try { String filename = name.substring(name.lastIndexOf(".")+1)+".class"; InputStream is = getClass().getResourceAsStream(filename) ; if (is== null){ return super.loadClass(name) ; } byte [] b= new byte[is.available()]; is.read(b) ; return defineClass(name, b, 0,b.length); } catch (Exception e) { throw new ClassNotFoundException(name); } } }; Object object= myLoader.loadClass("vmrun.InvokeDynamicTest").newInstance(); System.out.println(object.getClass()) ; System.out.println(object instanceof vmrun.InvokeDynamicTest); } }
输出
class vmrun.InvokeDynamicTest
false
这里我们得到的Class对象是CLassLoader可以识别的类,而InvokeDynamicTest是程序执行后可以识别的类,此时仅仅装载了InvokeDynamicTest的程序代码,还没有创建出其对象 ,接下来可以使用Class.newInsance()方法来调用InvokeDynamic类的构造方法,并返回一个真正的InvokeDynamicTest对象。
但是我们不能直接去调用 InvokeDynamicTest的任何方法,只能通过反射去调用其方法。
对比 学习
DexClassLoader使用-(1)
相关文章推荐
- 网页爬虫的设计与实现(Java版)
- java spring mvc之文件上传
- Java Excel API简介
- 学习日志---非递归二叉树游标遍历(前中后层序)
- hadoop学习之路——12、win7下eclipse连接hadoop测试环境
- java(1)
- Java实现excel数据导入和导出
- struts2的拦截器
- 取消Eclipse对于某些代码的格式化
- Java中堆内存和栈内存详解
- Spring学习笔记之五----Spring MVC
- Spring MVC DispatcherServlet绑定多种URL
- JAVAmap容器基本使用
- java基本知识小记(1)
- Spring事务管理
- java读取xml文件
- Caught an exception while getting the property… Struts2报错
- 工厂方法模式(java 设计模式)
- Struts2之文件上传,多文件上传
- java里面的 path 和 classpath