gpt4 book ai didi

java - 对象到字符串总是给我 null

转载 作者:行者123 更新时间:2023-12-02 07:18:21 26 4
gpt4 key购买 nike

基本问题,我尝试应用其他几个相关问题来解决它,但这总是返回为空。

public class Consultant {

public Name name;
String lastName;
String firstName;
String middleName;

public Consultant (Name name){
this.name = name;
this.lastName = name.getLastName();
this.firstName = name.getFirstName();
this.middleName = name.getMiddleName();
}

public Name getName(){
return name;
}

public void setFirstName(){
firstName = name.getFirstName();
}

public void setMiddleName(){
middleName = name.getMiddleName();
}

public void setLastName(){
lastName = name.getLastName();
}

@Override
public String toString(){
return lastName + ", " + firstName + " " + middleName;
}

}

为什么我尝试在任何地方使用它作为打印输出,我看到的都是 null,null null。我尝试了多次调整代码,但没有成功。

这是成功运行的测试类片段,仅返回名称的空值:

public void consultantTimeToStringTest() {
String fName = "Test";
String lName = "Dude";
Name contact = new Name(lName, fName);
Consultant testConsultant = new Consultant(contact);
System.out.println(testConsultant.toString());

这也是 Name 类:

public class Name {

private String firstName;
private String middleName;
private String lastName;

public Name(){

}

public Name(String lastName, String firstName){

}

public Name(String lastName, String firstName, String middleName){
this.firstName = firstName;
this.middleName = middleName;
this.lastName = lastName;
}

@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Name other = (Name) obj;
if (firstName == null) {
if (other.firstName != null)
return false;
} else if (!firstName.equals(other.firstName))
return false;
if (lastName == null) {
if (other.lastName != null)
return false;
} else if (!lastName.equals(other.lastName))
return false;
if (middleName == null) {
if (other.middleName != null)
return false;
} else if (!middleName.equals(other.middleName))
return false;
return true;
}

public String getFirstName(){
return firstName;
}

public String getLastName(){
return lastName;
}

public String getMiddleName(){
return middleName;
}

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((firstName == null) ? 0 : firstName.hashCode());
result = prime * result
+ ((lastName == null) ? 0 : lastName.hashCode());
result = prime * result
+ ((middleName == null) ? 0 : middleName.hashCode());
return result;
}

public void setFirstName(String firstName){

}

public void setLastName(String lastName){

}

public void setMiddleName(String middleName){

}

public String toString(){
StringBuilder result = new StringBuilder();
String NEW_LINE = System.getProperty("line.separator");
result.append(lastName);
return result.toString();
}

}

最佳答案

您的Consultant类有一个构造函数,它接受 Name作为参数。

当您实例化Consultant时,您必须传入 Name firstName 为 null 的对象, middleName , lastName

我建议在新建 Consultant 之前在一行上标记调试器。反对并检查 Name传入的对象并查看是否有 Name.firstName 的值等

我还会在 Consultant 的构造函数中添加一个断点观察 firstName 的值, middleName , lastName被设置。

更新

您刚刚发布了 Name 的代码而你的构造函数什么也没做。您的代码如下:

public Name(String lastName, String firstName){

}

应该是这样的

public Name(String lastName, String firstName){
this.lastName = lastName;
this.firstName = firstName;
}

关于java - 对象到字符串总是给我 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14617808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com