类加载器2





自己写个 类加载器


包图

package com.in;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Date;
import java.util.Properties;

public class Reflect extends Date {
	public String toString()
	{
		return "hello";
	}
}

自定义加载Reflect.class

package com.in;

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;

public class MyClassLoader extends ClassLoader{
	

	private String dir;

	public MyClassLoader()
	{
		
	}
	
	public MyClassLoader(String dir)
	{
		this.dir = dir;
	}
	
	
	

	
	public  void cypher(InputStream in,OutputStream out) throws IOException
	{
		int len = 0;
		while((len = in.read())!=-1)
		{
			out.write(len );
		}
		
	}
	
	@Override
	protected Class<?> findClass(String name) throws ClassNotFoundException {
		
		try {
			FileInputStream fis = new FileInputStream(dir + '\\' +  name.substring(name.lastIndexOf('.')+1) + ".class");
			ByteArrayOutputStream bos = new ByteArrayOutputStream();
			
			cypher(fis,bos);
			fis.close();
			byte[] bytes = bos.toByteArray();
			
			return defineClass(name, bytes, 0, bytes.length);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return super.findClass(name);
	}
	
	
	
	public static void main(String[] args) throws Exception {
		MyClassLoader my = new MyClassLoader("classLib");
		Class clazz = my.loadClass("com.in.Reflect");
		
		Date d = (Date)clazz.newInstance();
		System.out.println(d);
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值