######## 如何利用反射实现 动态生成一个对象(假如不存在类文件)? ########

hpq852 2004-09-22 12:08:18
public class Hello
{
public void sayHello()
{
......
}
}
现在这个Hello类是存在的,所以现在很容易生成Hello的对象,用new Hello()或者Class.forName("Hello").newInstance();都可以生成一个对象。

但现在问题是,假如没有源Hello.java这个类文件,我只在内存中生成一个Hello对象,应该如何实现?类似RMI中stub,和Skeleton的生成,应该如何实现呢?
...全文
386 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
老土豆T 2004-09-23
  • 打赏
  • 举报
回复
http://dynclass.sourceforge.net/

enjoy it:)
hpq852 2004-09-23
  • 打赏
  • 举报
回复
to shangqiao(伤桥):

谢谢你给的连接地址,openjava 和 javassist正是我需要的library,他们都是MetaObject Protocol(MOP)的实现,如果也想研究的话,可以看看他们的API 定义的很简单。
fantasyCoder 2004-09-22
  • 打赏
  • 举报
回复
en...不错...
动态在内存中生成对象的确是一种
不错的思路...

不过这样工程一大,就会出现难以预料的Bug...
在编译期是难以解决的...
Lacrimas 2004-09-22
  • 打赏
  • 举报
回复
可以把一个类的内容写到一个byte[] 里面,然后用ClassLoader的defineClass(String name, byte[] b, int off, int len) 的方法,这个方法是保护方法,因此你最好继承ClassLoader这个方法来实现调用。这样可以动态的增加新的类。看看ClassLoader这个类吧,应该会找到你想要的。
hpq852 2004-09-22
  • 打赏
  • 举报
回复
不是我有这种需求,可以看一下java的动态代理类是如何做的,同样是根据一个接口动态的生成一个实现了该接口的类,难道动态代理类也是先生成一个类文件吗?这样做也太损失效率吧,我想SUN的一牛们也不会这样做的
icy_csdn 2004-09-22
  • 打赏
  • 举报
回复
厉害
yangjuanli 2004-09-22
  • 打赏
  • 举报
回复
我见过动态加载类文件,还没见过动态生成对象,不知楼主为何有这种需求呢?
MaxMarvel 2004-09-22
  • 打赏
  • 举报
回复
java真是很有意思
shangqiao 2004-09-22
  • 打赏
  • 举报
回复
可以应该,我以前见过给类动态增加删除方法的,所以临时生成一个类应该也是可以的,你仔细看一下
http://www.csg.is.titech.ac.jp/openjava/,研究好了不要忘了告诉我一声哦,我没有时间
javafaq2004 2004-09-22
  • 打赏
  • 举报
回复
动态生成一个Java文件,再编译它,再使用。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧