0

DVD と主役のオブジェクトを 2 つの異なるクラスから表示できるようにする小さなアプリケーションに取り組んでいますが、次の出力が得られます。

person.Person@10ed7f5c

誰が私が間違っているのかについての洞察を提供できますか?

DVDクラス

public class DVD {

private String title;
private Person leadActor;
private int noOfStars;


public DVD (String a,Person person, int b) {

title = a;
leadActor = person;
noOfStars = b;   

}    

public String getTitle(){

return title;

}

public void setTitle(String title){

this.title = title;    
}

public Person getLeadActor(){

return leadActor;
}

public void setLeadActor(Person leadActor){

this.leadActor = leadActor;
}

public int getNoOfStars(){

return noOfStars;
}

public void setNoOfStarts(int noOfStars){

this.noOfStars = noOfStars;

}

@Override
public String toString() {

String s = "Title " + title + "/r" + "Actor:" + leadActor + "/r" + noOfStars;

return s;
}

}

人物クラス

public class Person {

private String firstName;
private String lastName;    


public Person (String a, String b){

firstName = a;
lastName = b;


}

public String getfirstName(){


    return firstName;
}

public void setfirstName(String firstName){


   this.firstName = firstName;
}

public String getlastName(){


    return lastName;
}

public void setlastName(String lastName){

this.lastName = lastName;
}
}

そして、オブジェクトを作成してtoStringを呼び出す私のクラス

public class DvdTest {


private DVD d1;

public static void main (String [] args){

Person p2 = new Person ("Leonardo", "Decaprio");

DVD d1 = new DVD ("Inception",p2,4); 

System.out.println (p2.toString());

}
}
4

4 に答える 4

3

クラスと同じように、クラスのメソッドDVDもオーバーライドする必要があります。現在、のデフォルト実装から返された値を出力しています。これは次のようなものですtoString()PersontoString()

getClass().getName() + '@' + Integer.toHexString(hashCode())

以下は、IDE で生成された実装のサンプルです。

@Override
public String toString() {
    return "Person [firstName=" + firstName + ", lastName=" + lastName + "]";
}
于 2013-11-08T10:58:31.150 に答える
1

toString()メソッドをオーバーライドする必要があります。

@Override
public String toString() {
    return String.format("Person [firstName=%s, lastName=%s]", firstName, lastName);
}
于 2013-11-08T11:03:12.243 に答える
1

leadActortype の whichを表示しようとするとPersonPersonクラスtoStringメソッドが呼び出されます。デフォルトtoStirngのメソッドは、クラス名とハッシュを@文字で区切って出力します。そのため、出力に次のように表示されます。

Person@10ed7f5c

Person オブジェクトを美しく印刷するには、クラスtoStringのメソッドもオーバーライドする必要があります。Person以下は、Eclipse を使用して生成された toString 実装です。

@Override
public String toString() {
    return "Pricing [firstName=" + firstName + ", lastName=" + lastName
            + "]";
}  
于 2013-11-08T10:58:29.477 に答える