读取CSV文件时Project对象的Location字段输出null的问题排查
解决Project实例中Location字段显示null的问题
以下是几个最可能的原因及对应的修复方案:
1. 构造方法未正确赋值location成员变量
这是最常见的问题:你在Project的构造方法里接收了Location参数,但没有把它赋值给类的location成员变量。
错误示例:
public class Project { private String province; private String beneficiary; private Location location; // 错误:未给location成员变量赋值 public Project(String province, String beneficiary, Location location) { this.province = province; this.beneficiary = beneficiary; } }
修复:在构造方法中添加赋值语句
public Project(String province, String beneficiary, Location location) { this.province = province; this.beneficiary = beneficiary; this.location = location; // 关键:将参数赋值给成员变量 }
2. 成员变量被局部变量覆盖
如果在构造方法或其他方法中,你重新定义了同名的局部location变量,会导致类的成员变量始终未被赋值。
错误示例:
public Project(String province, String beneficiary, Location location) { this.province = province; this.beneficiary = beneficiary; Location location = location; // 局部变量覆盖了成员变量 }
修复:去掉局部变量的类型声明,直接使用this.location赋值
public Project(String province, String beneficiary, Location location) { this.province = province; this.beneficiary = beneficiary; this.location = location; }
3. toString方法未正确引用成员变量
检查Project的toString方法,确保它引用的是类的location成员变量,而不是其他未初始化的变量或新创建的Location实例。
错误示例:
@Override public String toString() { return "Project{" + "province='" + province + '\'' + ", beneficiary='" + beneficiary + '\'' + ", location=" + new Location() + // 错误:创建了新的空实例 '}'; }
修复:直接引用成员变量location
@Override public String toString() { return "Project{" + "province='" + province + '\'' + ", beneficiary='" + beneficiary + '\'' + ", location=" + location + // 正确引用成员变量 '}'; }
4. 传入构造方法的是null而非初始化后的pLocation
确认processLine方法中,你传入Project构造的是已经正确初始化的pLocation实例,而不是null或未赋值的变量。
错误示例:
// 错误:传入了null Project pProject = new Project(province, beneficiary, null);
正确写法:
// 先初始化pLocation,再传入构造方法 Location pLocation = new Location(latitude, longitude); Project pProject = new Project(province, beneficiary, pLocation);
内容的提问来源于stack exchange,提问作者Cindy_l
相关产品推荐
相关产品推荐

