我已经使用它的变量创建了不同的类,并且我试图创建一个Java程序来在SQL数据库中创建表。问题是我不知道如何在函数中将类作为参数发送。
我正在使用此功能:
public void createTable (/*Class c ?*/) {
ArrayList<String> fields = new ArrayList<>();
for (Field f: c.class.getDeclaredFields()) {
fields.add(f.getName());
}
Statement statement;
statement = connection.createStatement(); //This part of the function wouldn't work. But let's focus on the question
statement.execute("insert into " + c.getSimpleName() + "(" + String.join(", ", fields) + ") values" etc...
}
[请注意,我要向SQL数据库中插入数据的函数的第二部分将无法正常运行,因为它尚未完成。但是,如何在此函数中接收不同的类(显然具有不同的变量),并对所有类执行相同的操作? (创建一个具有字段名称的列表)。
对于在此问题中寻找答案的任何人,这对我都有效:
public void createTable(Class c){
ArrayList<String> fields = new ArrayList<>();
Object ob = c.newInstance();
for (Field f: ob.getClass().getDeclaredFields()) {
fields.add(f.getName());
}
// etc...
}
这很简单,只需重构如下:
public void createTable (Class c) {
ArrayList<String> fields = new ArrayList<>();
for (Field f: c.getDeclaredFields()) {
fields.add(f.getName());
}
Statement statement;
statement = connection.createStatement(); //This part of the function wouldn't work. But let's focus on the question
statement.execute("insert into " + c.getSimpleName() + "(" + String.join(", ", fields) + ") values" etc...
}