-2

我需要一个返回对象数组的方法。下面是我的代码,但我得到空指针异常,不知道为什么。

    public Place[] getPlaces() 
    {
        Place result[] = null ;
        int counter = 0;

        try {
            PreparedStatement ps = this.db.prepareStatement("select * from places");

            ResultSet rs = ps.executeQuery();

            while(rs.next()) {
                Place p = new Place();
                p.setPlaceID(rs.getInt("placeID"));
                p.setPlaceName(rs.getString("placeName"));

                result[counter] = p;
                counter++;
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

在线result[counter] = p;日食说:

此行有多个标记 - 空指针访问:变量结果在此位置只能为空

所以,我@SuppressWarnings("null")在我的方法之前添加了。但是,当方法被调用时,它会抛出空指针异常。在我遇到问题的行之前,尝试打印存储在 db 中的地名并且它有效。因此,这不是数据库问题,因为错误输出显示:

java.lang.NullPointerException
    at PlaceMod.getPlaces(PlaceMod.java:29)
    at PlaceCont.list(PlaceCont.java:15)
    at Main.main(Main.java:14)

这段代码有什么问题?

4

3 回答 3

4

您创建了一个空数组。使用ArrayList(因为您不知道结果集的大小):

 List<Place> result = new ArrayList<>();

 while(rs.next()) {
   ...
   result.add(p);
 }
于 2013-01-12T20:11:48.417 回答
0

您从未分配过一个数组,因此当您尝试时result它仍然存在nullresult[counter] = p;

于 2013-01-12T20:10:29.720 回答
0

你没有初始化你的数组。您必须result = new Place[size]在使用此数组之前放置类似的内容(大小是数组的长度)。你应该考虑ArrayList在这里使用。

于 2013-01-12T20:10:58.393 回答