-1

私のコードが「java.io.WriteAbortedException: 書き込みが中止されました; java.io.NotSerializableException: core.FlightOrder$FlightTicket」例外をスローしている理由を理解しようとしていました。

私は次のように宣言されたクラスを持っています:

public class FlightOrder implements Serializable 

FlightTickets のプライベート セットが含まれています。

そして、次のように宣言された内部クラス:

public class FlightTicket

私が読んだ解決策は、内部クラス「FlightTicket」を静的クラスにすることでしたが、コードを適切に機能させるために何をすべきかわかりません。誰かがこの問題にアプローチする正しい方法を理解するのを手伝ってもらえますか?

public class FlightTicket
{
    /**
    * The passenger for this ticket
    */
    private Customer passenger;
    /**
     * passenger's seat
     */
    private int seat;
    /**
     * passenger's row
     */
    private int row;
    /**
     * The passenger's class in the plane 
     */
    private E_ClassType classType;

    /**
     * Full constructor
     * @param passenger
     * @param seat
     * @param row
     * @param classType
     */
    public FlightTicket(Customer passenger, int seat, int row , String classType)
    {
        this.passenger = passenger;
        setSeat(seat);
        setRow(row);
        setClassType(classType);
    }

    /**
     * Partial constructor
     * @param seat
     * @param row
     */
    public FlightTicket(int seat, int row)
    {
        setSeat(seat);
        setRow(row);
    }

    //-------------------------------Getters And Setters------------------------------
    /**
     * seat has to be positive number
     * @param seat
     */
    public void setSeat(int seat) {
        if(seat>0)
            this.seat = seat;
    }


    /**
     * row has to be positive number
     * @param row
     */
    public void setRow(int row) {
        if(row>0)
            this.row = row;
    }

    /**
     * 
     * @return classType
     */
    public E_ClassType getClassType() {
        return classType;
    }

    public int getSeat(){
        return seat;
    }
    public int getRow(){
        return row;
    }

    /**
     * set the class type from the array classType located in Constants.
     * if the classType not exists, the default value is Economy.
     * @param classType
     */
    public void setClassType(String classType) {

        for(E_ClassType c : E_ClassType.values())
        {
            if(c.toString().equals(classType))
            {
                this.classType = E_ClassType.valueOf(classType);
                return;
            }
        }
        this.classType = E_ClassType.Tourists;

    }

    public FlightOrder getOuterType() {
        return FlightOrder.this;
    }


    /* (non-Javadoc)
     * @see java.lang.Object#hashCode()
     */
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + getOuterType().hashCode();
        result = prime * result + row;
        result = prime * result + seat;
        return result;
    }

    /* (non-Javadoc)
     * @see java.lang.Object#equals(java.lang.Object)
     */
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        FlightTicket other = (FlightTicket) obj;
        if (!getOuterType().equals(other.getOuterType()))
            return false;
        if (row != other.row)
            return false;
        if (seat != other.seat)
            return false;
        return true;
    }

    /* (non-Javadoc)
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        return "FlightTicket [passenger=" + passenger + ", seat=" + seat
                + ", row=" + row + ", flight number=" + getFlight().getFlightNumber() + "]";
    }

}// ~ END OF Inner Class FlightTicket
4

2 に答える 2