![](/img/trans.png)
[英]How to create Object[][] from ArrayList<Object[]> in java
[英]how to create arraylist<Object> from variable?
我需要创建一个对象的arraylist,但需要从变量中加载对象的名称。 我有这个...
public store_table(String table_name){
switch (table_name)
case: "table_1" table_1_list=new ArrayList<Person>; break;
case: "table_2" table_2_list=new ArrayList<Car>; break;
...
}
我需要创建这样的东西:
list=new ArrayList<table_name>;
我使用ORM从具有多个表的数据库中读取数据。 因此,table_name也是对象的名称。
所以这里是更多代码...
store_into table(String table_name) throws SQLException{
query="SELECT * FROM " +table_name+" OFFSET"+offset+ " FETCH NEXT 50 ROOWS ONLY";
Statement st= conn.createStetement();
Resulset rs= st.executeQuery(query);
while(rs.next()){
case "Person":
person=new Person (rs.getInt(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getString(5),rs.getString(6));
person_list.add(person);
break;
case "Car": ...
break;
...
}
} rs.close();
st.close();
switch (table_name){
case "Person":
Singleton.getInstance().populate_tabule(person_list);
break;
case "car": ...
break;
} }
这是我如何打印行
public void populate_table(ArrayList<Person> list){
Object[] row=new Object[6];
for(int i=0;i<offset_size;i++){
row[0]=list.get(i).getId();
row[1]=list.get(i).getName();
row[2]=list.get(i).getBirthday();
row[3]=list.get(i).getEmail();
row[4]=list.get(i).getAddress();
row[5]=list.get(i).getSalary();
view.setModel(row);
}
您的问题是您的整个“心理”模型不足。 一旦开始创建名为a1,a2,...的变量,然后编写代码明确为每个变量执行操作,则很可能您做错了。
从这个意义上说,您不使用列表,因为可以使用; 因为您考虑过要在现实世界中构建要表达的方面的心理模型。
首先,您可能应该使用某种ORM框架为您做这些事情(您的代码不过是尝试自己构建类似的功能而已)。
除此之外; 如前所述:您应该退后一步并改进对象模型。
您可以制作一个HashMap,其中已经制作了所有可能的ArrayList,然后键值是带有表名的字符串。
就像是:
private final Map<String, ArrayList> TableArrays = new HashMap<>();
TableArrays.put("Person" , new ArrayList<Person>);
TableArrays.put("Car", new ArrayList<Car>);
ArrayList getTableArray(String table_name) {
return TableArrays.get(table_name);
}
因此,您要创建类型为table_name
的Object
的 ArrayList
。
switch
具有比较实际值而不是分配给对象的值的限制。
例如,您不允许做类似的事情
switch (table_name) {
case temp1:
System.out.println("This is test1");
break;
case temp2:
System.out.println("This is test2");
break;
}
你被允许做
switch (table_name) {
case "test1":
System.out.println("This is test1");
break;
case "test2":
System.out.println("This is test2");
break;
}
我建议从switch
到多个if-else
语句来解决此目的。
所以你可能有一个Person类
class Person {
int data;
Person(int data) {
this.data = data;
}
}
汽车课是
class Car {
int data;
Car(int data) {
this.data = data;
}
}
因此,您将以以下方式创建ArrayLists
public class Store_table {
List<Person> personList;
List<Car> carList;
Store_table(Object o) {
if (o instanceof Person) {
personList = new ArrayList<Person>();
} else if (o instanceof Car) {
carList = new ArrayList<Car>();
}
}
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.