-1

コードが最後の出力でnull値を返すのはなぜですか?私はこれを返すことになっています:ガレージからの自動MERCEDES C:TOP SERVICE(x2)実際には、完全な出力は次のようになります:ガレージからのAuto FORD S-MAX:ガレージからのSPEEDY Auto FORD FOCUS:ガレージからのSPEEDY Auto MERCEDES C:TOPガレージのサービスオートメルセデスC:トップサービス

私は、問題が私のオブジェクトのコピーを構築する私の構築者のどこかにあることを知っています。ありがとうございました

public class Garage {

    //final String naam;
    String naam;

    public Garage (String n){
        this.naam = n;
        }
    public String getName(){
        return naam;
    }

    public void setName(String sn){
        this.naam = sn;
    }

    public String toString(){
        return ""+getName(); 

    }

}

public class Auto {

    //static final String brandName; 
    String brandName;
    Garage garage;

    public Auto(String mn){
        this.brandName = mn;

    }
    public Auto(Auto a){
        this.hashCode();
    }
    public Auto(String mn, Garage g){
        //this(mn);
        this.brandName = mn;
        this.garage = g;
    }

    public String getBranName(){
        return brandName;
    }
    public Garage getGarage(){
        return garage;
    }

    public void setGarage(Garage g){
        this.garage = g;
    }

    public String toString(){
        return "Auto "+getBranName()+" from Garage: "+getGarage();
    }

}


public class GarageTester {

    /**
     * @param args
     */
    public static void main(String[] args) {

        Auto auto = new Auto("FORD S-MAX");
        Garage garage = new Garage("SPEEDY");
        auto.setGarage(garage);

        System.out.println(auto);

        auto = new Auto("FORD FOCUS",garage);

        System.out.println(auto);

        auto =  new Auto("MERCEDES C", new Garage("TOP SERVICE"));

        System.out.println(auto);

        Auto kopie = new Auto(auto);

        System.out.println(kopie);

    }

}
4

1 に答える 1

1

Autoコピーコンストリクターをクラスに実装していません。

public Auto(Auto a){
    this.hashCode();
}

現在のところ、hashCode()メソッドを呼び出すだけで、クラス属性は初期化されません。

以下のように修正してください。

public Auto(Auto a){
    this.brandName = a.brandName;
    this.garage = a.garage;
}

その後、ステートメントは、インスタンスからコピーされた属性を持つAuto kopie = new Auto(auto);新しいクラスインスタンスになります。kopieauto

于 2012-12-01T21:02:00.123 に答える