Java实现按条件删除网格数据时toString传参报错如何解决
问题解决方法
报错原因
你收到的报错是因为Java中Object类自带的toString()方法为无参方法,你调用时传入了"Not Contacted"字符串参数,没有匹配的方法重载,所以触发了类型不匹配错误。除此之外,原代码中用==对比字符串的写法也存在隐患:==对比的是字符串对象的内存地址,而非实际内容,大概率会出现逻辑判断不符合预期的问题。
修正后代码
你只需要直接对比customer.getStatus()返回的状态值和目标字符串即可,修正后代码如下:
private void delete() { // 用equals做字符串内容对比,把常量写在前面可以避免空指针异常 if("Not Contacted".equals(customer.getStatus())) { service.delete(customer); myUI.updateList(); setVisible(false); } else { Notification.show("you cannot delete this"); } }
可选优化(如果状态是枚举类型)
如果你的客户状态是用枚举类管理的,推荐直接对比枚举实例,不需要做字符串转换,性能和可维护性更高:
// 假设状态枚举类为CustomerStatus,NOT_CONTACTED是对应Not Contacted的枚举实例 if(CustomerStatus.NOT_CONTACTED.equals(customer.getStatus())) { // 执行删除逻辑 }
内容的提问来源于stack exchange,提问作者Mohamed hazem
相关产品推荐
相关产品推荐

