如何在java中动态创建一个类

Art*_*Ale 22 java reflection activerecord

我不知道这是否可能.无论如何,这是我的问题:我想创建一个具有数据库表模式的类,例如假设我有一个像这样的表

id - unsigned int 
username - varchar(128)
password - varchar(128)
Run Code Online (Sandbox Code Playgroud)

我假设我可以从我的数据库中查询这些数据.我想要做的是动态创建(当然,实例化)一个看起来像这样的Java类:

public class User{
    private unsigned int id;
    private String username;
    private String password;
}
Run Code Online (Sandbox Code Playgroud)

(实际上是ActiveRecord我的桌子)

你能帮我开始吗?TNKS

Mic*_*rdt 19

对于您的其他代码都不知道的动态创建和实例化的类,您会怎么

对于像Java这样的静态类型语言,拥有这样的类是没有意义的.另一方面,像Hibernate这样的大多数OR Mappers都带有允许您从数据库模式静态生成类的工具.

  • 一个用例是生成一个实现静态代码知道的接口的类.我正在研究这个主题,因为我们有一个针对混合数据库模式运行的应用程序,因此列可能存在也可能不存在. (2认同)

Boz*_*zho 17

从技术上讲,您可以通过字节码操作库 - CGLIB,javassist,asm,bcel等.

然而,这不是Java的"哲学".Java是静态类型的,因此您最好在运行时之前创建类.

看一下hibernate/eclipseLink for Java ORM - 一种将表映射到对象的方法.


Poi*_*nty 6

我想你想要的是由java.lang.reflect.Proxy相关课程提供的设施.