-6

我正在尝试显示我的对象内容。我使用 ORM。我有包含用户列表的 Delivery。在 delivery.toString() 我这样做:

    `    
@Override
public String toString() {
    String usersReadables = "";

    try {
        CloseableIterator<User> userIterator = this.getUsers().closeableIterator();

        try {
            // For each user.
            while (userIterator.hasNext()) {
                usersReadables += usersReadables.length() > 0 ? ", " : "";
                User user = userIterator.next();
                usersReadables += user.getName();
            }
        } finally {
            // Always close the iterator, else the connection from the database
            // isn't destroyed.
            try {
                userIterator.close();
            } catch (SQLException e) {
                Log.e(DatabaseHelper.class.getName(), e.getMessage(), e);
            }
        }
    } catch (Exception e) {
        usersReadables = null;
    }

    return "Delivery [deliveryId=" + deliveryId + ", round=" + round + ", typeDelivery=" + typeDelivery + ", priority=" + priority + ", deliveryOver=" + deliveryOver + ", receiverAvailable=" + receiverAvailable + ", signature=" + signature + ", dateOver=" + dateOver + ", latitude=" + latitude + ", longitude=" + longitude + ", users=" + usersReadables + ", sender=" + sender + ", receiver=" + receiver + "]";
}`

但是如果我尝试做 usersReadables += user.toString(); 该程序生成一个异常。我不明白为什么。我也覆盖了 User.toString 以正确显示我的用户,但是......

你有什么主意吗 ?谢谢你。

4

1 回答 1

-1

似乎您收到错误的原因是因为 userReadables 最初设置为空字符串。在捕获中,你有

catch(Exception e) {
   userReadables = null;
}

并且由于 userReadables 已经为空,因此它会在执行其他任何操作之前调用异常。让它与程序相关。将其更改为

String userReadables = " ";

这样它至少会被注册为一个空间,而不是为空。

希望这可以帮助!

于 2013-05-19T22:50:17.380 回答