如何动态初始化java中的Object []?

时间:2013-04-28 18:26:52

标签: java nullpointerexception

我在global中创建了对象。

public Object[] columns2;

我在代码中执行一些操作:

 Statement st = con.createStatement();
 ResultSet rs = st.executeQuery("SELECT * FROM "+Gtest+"");
 ResultSetMetaData rsmd = rs.getMetaData();
 NumOfCol = rsmd.getColumnCount();
 for(int n=0;n<NumOfCol;n++)
  {
   columns2[n]=rsmd.getColumnName(n+1);
  }

因为columns2应该像

  Object[] columns2={"FirstName","LastName","Age"};

但它在for循环中给出了nullpointerexception。

应该做些什么改变?

3 个答案:

答案 0 :(得分:5)

在推送数据之前,您必须先启动columns2

columns2 = new Object[NumOfCol];

答案 1 :(得分:1)

Statement st = con.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM "+Gtest+"");
ResultSetMetaData rsmd = rs.getMetaData();
NumOfCol = rsmd.getColumnCount();
columns2 = new Object[NumOfCol];
for(int n=0;n<NumOfCol;n++)
{
  columns2[n]=rsmd.getColumnName(n+1);
}

答案 2 :(得分:1)

您尚未初始化columns2。您可以按如下方式更改代码:

 Statement st = con.createStatement();
 ResultSet rs = st.executeQuery("SELECT * FROM "+Gtest+"");
 ResultSetMetaData rsmd = rs.getMetaData();
 NumOfCol = rsmd.getColumnCount();
 columns2 = new Object[NumOfCol];
 for(int n=0;n<NumOfCol;n++)
 {
   columns2[n]=rsmd.getColumnName(n+1);
 }

这应该使您的代码有效。虽然如果性能这样的事情对你很重要,我会调查其他数据结构,如Arraylist。