黑马程序员技术交流社区

标题: 不用配置文件能否统计程序运行次数? [打印本页]

作者: 闾丘日月    时间: 2012-5-29 09:35
标题: 不用配置文件能否统计程序运行次数?
起因来自于这个测试题:编写一个程序,记录该程序运行次数。运行满足5次,就提示用户“软件试用期限已到”
用配置文件记录次数应该是视频上有讲过的,但是学过反射以后我们知道
一个类是由类加载器将硬盘上的.class文件加载到内存中的,而我们能通过反射的方式很轻易的改变内存中类的成员变量的值,那么这个改变了的值到底能不能写回给.class文件呢??
我的直觉是应该有这么个东西,我能读.class文件,理所当然应该能写.class文件,但是我在Class类和ClassLoader类中都没有发现类似方法,于是我惆怅了。。
我的这个想法能不能做到呢?
java到底有没有提供比如ClassWriter这样的类?如果有,是什么
如果没有,我们有没有可能自己写个这样的类出来,将内存中的字节码存到.class文件中?

作者: 闾丘日月    时间: 2012-5-30 08:16
我晕,没人理我么。。。。
作者: 张亭    时间: 2012-5-30 08:21
ClassLoader下的defineClass() 方法可以将一个 byte 数组转换为 Class 类的实例。
楼主可以试试
作者: 闾丘日月    时间: 2012-5-30 08:37
在张老师的加密解密类文件和自定义类加载器中好像用到了这个。但是他只能从硬盘上往内存读,不能写到硬盘啊。
作者: 张晨    时间: 2012-5-30 08:51
楼主去看看动态代理,是可以在运行时生成新.class文件的,并且.class文件能够运行,但是修改原有文件我没看过
修改配置文件是最快的咯
作者: 闾丘日月    时间: 2012-5-30 12:23
张晨 发表于 2012-5-30 08:51
楼主去看看动态代理,是可以在运行时生成新.class文件的,并且.class文件能够运行,但是修改原有文件我没看 ...

哦,那一块我还没看到。你如果有办法的话能不能稍微详细点给个思路?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2