考试网 >> IT认证 >> JAVA >> JAVA指导 >> 在运行时刻从文件中调入Class(defineClass 的使用)

在运行时刻从文件中调入Class(defineClass 的使用)

发布时间:2006-06-28 10:49     点击:
分页:[1] 2 3 4 5 6 7  下一页

前言:

了解JAVA的类装载器:

Java 编程语言编译器把源代码代码转换成为一个假定机器(即虚拟机)上的 机器语言。虚拟机代码保存在一个后缀为.class的类文件中。每个类文件保存这 

个类的所有方法的虚拟机代码。

当运行时用一个解释程序解释这些类文件,把这些文件内的虚拟机指信信令翻 译成本地的机器语言,分存内存,确定程序入口点。

类装载器功能类似与C中调入dll文件文法,在C中是调入dll文件分配内存,确定 程序入口点(分配入口指针),而在java中调入一个class文件,同样是从本地或网络 

中调入文件,转换为本地机器代码,分配内存,确定程序入口点。

当我们在使用中有时要使用一个新类,知道它的文件路径和它的文件名字,我们 要把它调入系统并使用它或者说一个类文件已经被加密处理,类文件里面的内容 

是我们加密后的密文,不能直接使用,只能是对文件内容解密后才能使用,就可 以用类库加载器ClassLoader,把类文件当做数据流读入到一个byte[]中,对 

这个 byte[]进行解密处理后(没加密当然就不用做这步了),再通过 byte[] 生成一个类,并加载到系统中。

对于使用中有以下两种方法: 

方法1

使用接口类,新调用的class是对它的具体实现 

1) 写一个接口类 newface.class 

public interface newface {

       public void out(String xx);

       public int outsize(String x1,String x2);

 }

2) 写接口文件实现 testfacea.class 并更名为 testfacea.file 或其它文件名全可以 

/*

newface的实现

*/

public class testfacea implements newface{

    public void out(String xx)  {

    System.out.println(xx+" for testfacea ");
分页:[1] 2 3 4 5 6 7  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有