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

一般来说java建立对象可以用
AAA aaa = new AAA();

这个AAA对象必须是先建立好的
public class AAA{
....
}

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

BCEL library

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

Azure_2003

不太同意你的看法。

如果有代码生成规则,
那么可以按该规则生成新的class,
程序应能完成如下功能:
1.获取到生成规则,如必要的class name,super class type,member var,methods
2.按规则生成代码
3.动态编译,并把编译的.class文件或者打成的jar包 放到某一合适路径下。
4.动态类装入。
分析一下,这四不都能实现
但是,就目前的情况来看,
只能生成功能比较简单的类,
如interface
或者是标准javabean
对与复杂情况,现在还不行。
同时,我认为 动态生成不存在的类是编程的最高境界,
也就是计算机自动编写需要的程序并加载运行。
目前的技术还不能完全满足,但可满足部分简单情况。

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

赫赫。动态生成一个不存在的新类。是完全可以实现的。。。就是BCEL。。。

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


说的是这个道理呀。
不过,
如果产品和业务逻辑有一定规则可寻,那么也能够完成
问题是,我们的软件完成的功能和业务常常都是不能按规则来的

另外,我相信在将来,一定人工智能能达到这个程度,
这不仅仅是计算机语言的发展的问题,相关的各个领域都发展的相当程度时,如神经网络之类,才能实现这么个理想。
虽然这还比较遥远,但是,不可否认,动态生成程序是一个发展方向,
现在仅仅处于起步阶段,能完成的任务是有限的,如同计算机语言一样,现在还处在0 1代码的编程时代。
大家可以拭目以待。