Overriden toString()给出错误

时间:2015-12-08 23:58:24

标签: java android tostring

             @Override
                protected void onHandleIntent(Intent intent) {
                    if (intent != null) {
                        final String action = intent.getAction();
                        if (ACTION_UPDATE_SERVER.equals(action)) {
                            final Server server = (Server)intent.getSerializableExtra(SERVER);
                            handleActionUpdateServer(server);
        [...]
    }
    }
}

server是我创建的模型类,我覆盖了toString()。

在第

 final Server server = (Server)intent.getSerializableExtra(SERVER);

我收到此错误

[package].[app] Java.lang.NullPointerException exception: cannot evaluate server.toString()

由于此错误,似乎无法检索序列化的额外内容。

但如果我删除了toString()的实现,那么就没有错误。问题是我需要覆盖toString,以便listView在列表中显示服务器类的对象时使用。 (运行以填充列表时,toString()方法没有问题。

我的toString实现如下所示:

 @Override
        public String toString() {
            StringBuilder strb = new StringBuilder(serverTitle);
            strb.append(" | Monitored: ");
            strb.append(isMonitored);
            strb.append(" | Online: ");
            strb.append(isOnline);
            return strb.toString();
        }

为什么我自己覆盖它时无法评估server.toString,为什么还要尝试?

不要将此标记为nullPointerException问题的副本,因为这对我没有任何帮助。 应用程序在此错误后没有崩溃,它一直在运行,对我而言,错误似乎与我的toString()

的实现有关

1 个答案:

答案 0 :(得分:1)

看起来像serverTitle = null,因为新的StringBuilder(null)抛出NullPointerException,如果server = null,我认为错误消息必须完全不同。请检查serverTitle值或使用以下代码:

@Override
        public String toString() {
            StringBuilder strb = new StringBuilder();
            strb.append(serverTitle); 
            strb.append(" | Monitored: ");
            strb.append(isMonitored);
            strb.append(" | Online: ");
            strb.append(isOnline);
            return strb.toString();
        }