如何动态创建一个以前完全不存在的新类?

04-08-12 iter
一般来说java建立对象可以用

AAA aaa = new AAA();

这个AAA对象必须是先建立好的

public class AAA{

....

}

java能否动态的创建一个以前完全不存在的新类?如动态建立一个BBB?

mep
2004-08-12 11:55
BCEL library

Azure_2003
2004-08-12 12:51
这是不可能的事,因为我们没有源码,没有源程序怎么会有对象呢,除非我们有源代码生成工具,而且还要编译源码。

SportsBaby1980
2004-08-12 14:23
Azure_2003

不太同意你的看法。

如果有代码生成规则,

那么可以按该规则生成新的class,

程序应能完成如下功能:

1.获取到生成规则,如必要的class name,super class type,member var,methods

2.按规则生成代码

3.动态编译,并把编译的.class文件或者打成的jar包 放到某一合适路径下。

4.动态类装入。

分析一下,这四不都能实现

但是,就目前的情况来看,

只能生成功能比较简单的类,

如interface

或者是标准javabean

对与复杂情况,现在还不行。

同时,我认为 动态生成不存在的类是编程的最高境界,

也就是计算机自动编写需要的程序并加载运行。

目前的技术还不能完全满足,但可满足部分简单情况。

Azure_2003
2004-08-13 12:56
对,这个规则的具体实现就是我说的源码生成工具,即时如此,我们现在只能生成一些结构简单的东西,要想它帮你实现完整的产品和业务逻辑,变得象人一样智能化的随意畅想,人工智能到了这种地步,我们人类还有存在的理由吗?算了吧,世界末日到了。

jody
2004-08-13 13:06
赫赫。动态生成一个不存在的新类。是完全可以实现的。。。就是BCEL。。。

SportsBaby1980
2004-08-13 13:24
对,这个规则的具体实现就是我说的源码生成工具,即时如此,我们现在只能生成一些结构简单的东西,要想它帮你实现完整的产品和业务逻辑,变得象人一样智能化的随意畅想,人工智能到了这种地步,我们人类还有存在的理由吗?算了吧,世界末日到了。

说的是这个道理呀。

不过,

如果产品和业务逻辑有一定规则可寻,那么也能够完成

问题是,我们的软件完成的功能和业务常常都是不能按规则来的

另外,我相信在将来,一定人工智能能达到这个程度,

这不仅仅是计算机语言的发展的问题,相关的各个领域都发展的相当程度时,如神经网络之类,才能实现这么个理想。

虽然这还比较遥远,但是,不可否认,动态生成程序是一个发展方向,

现在仅仅处于起步阶段,能完成的任务是有限的,如同计算机语言一样,现在还处在0 1代码的编程时代。

大家可以拭目以待。

猜你喜欢