0

基本的な質問です。他のいくつかの関連する質問を適用して解決しようとしましたが、これは常に null として返されます。

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 値を返すだけです。

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();
}

}

4

2 に答える 2

2

クラスConsultantには、パラメーターとして受け取る単一のコンストラクターがNameあります。

インスタンス化するときは、 、、に対して null を持つオブジェクトをConsultant渡す必要があります。NamefirstNamemiddleNamelastName

オブジェクトを新規作成する直前の行でデバッガーにタグを付け、渡されたConsultantオブジェクトをチェックして、などNameの値があるかどうかを確認することをお勧めします。Name.firstName

また、 のコンストラクターにブレークポイントを追加して、 、、Consultantの値が設定されるのを監視します。firstNamemiddleNamelastName

アップデート

コードを投稿したばかりNameで、コンストラクターは何もしていません。あなたのコードは次のとおりです。

public Name(String lastName, String firstName){

}

それは読むべきです

public Name(String lastName, String firstName){
    this.lastName = lastName;
    this.firstName = firstName;
}
于 2013-01-31T03:13:39.553 に答える
0

名前を次のように初期化します。

Name contact = new Name(lName, fName);

しかし、あなたは何もしませんでした

public Name(String lastName, String firstName){

}

そしてあなたのNameクラスでは、

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

すべてnullsとして初期化されます。だからあなたが電話するとき

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

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

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

あなたのConsultantクラスでは、彼らはすべてを取得しますnull

于 2013-01-31T03:17:07.820 に答える