1

内部クラスを持つクラスの toString() メソッドを作成しようとしていますが、問題が発生しています。各配列をループすることを考えていましたが、正しく実行できませんでした。どんな提案も素晴らしいでしょう。

public class MarketDataListLevel2 {

    public static class BidAskList {
        protected  MarketData Bid;
        protected MarketData Ask;
        private BidAskList(@JsonProperty("Bid") MarketData Bid, @JsonProperty("Ask") MarketData Ask) {
            this.Bid = Bid;
            this.Ask = Ask;
        }
    }

    protected BidAskList[] BidAskList;
    public MarketDataListLevel2(@JsonProperty("Top10BidAsks") BidAskList[] BidAskList) {
        this.BidAskList = BidAskList;
    }       

    public String toString() {
        // Will make an edit to this later
    }
}

MarketData は基本的に 4 つのフィールドを持つオブジェクトです。

編集:

これは私が出力したい種類のデータです:

{"Top10BidAsks":[ {"Bid":{"Price":10.0,"Size":2.0,"ExchangeID":"SMART","timeStamp":0}, "Ask":{"Price":12.0, "Size":2.0,"ExchangeID":"SMART","timeStamp":0}}, {"Bid":{"Price":0.0,"Size":0.0,"ExchangeID":"SMART","timeStamp ":0}, "質問":{"価格":13.0,"サイズ":12.0,"ExchangeID":"SMART","タイムスタンプ":0}}] }

ご覧のとおり、{"Price":10.0,"Size":2.0,"ExchangeID":"SMART","timeStamp":0} は基本的に、私の MarketData クラスから構築された 4 つのフィールドです。

ビッドとアスクは基本的に 1 つのオブジェクトです (2 つの Marketdata オブジェクトから構成される内部クラス)。最後に、オブジェクト全体が MarketDataListLevel2 クラスです。

基本的に、これら 3 つのクラスすべてを含む toString メソッドでデータを出力できるようにしたいと考えています。

4

3 に答える 3

1

内部クラスの BidAskList の名前を BidAsk に変更することをお勧めします。実際にはリストではなく、Bid と Ask の 2 つのフィールドが含まれているだけです。(名前を変更すると、混乱が解消される場合があります。)

また、MarketData 型を double (データによっては float) に変更することをお勧めします。

また、フィールド (Bid や Ask など) には小文字で始まる名前を付ける必要があります。

以下には 2 つの toString() メソッドがあります。内部クラスのものは、BidAsk を として出力し[45.45 x 45.47]ます。もう 1 つは外側のクラスで、foreach ループを使用して各 BidAsk を出力します。

public class MarketDataListLevel2 {

    public class BidAsk {
        protected double bid;
        protected double ask;
        private BidAsk(double bid, double ask) {
            this.bid = bid;
            this.ask = ask;
        }
        public String toString() { return "[" + bid + " x " + ask + "]"; }
    }

    protected BidAsk[] bidAskList;
    public MarketDataListLevel2(BidAsk[] bidAskList) {
        this.bidAskList = bidAskList;
    }       

    public String toString() {
        StringBuilder ans = new StringBuilder();
        for (BidAsk bidAsk : bidAskList) {
            ans.append(bidAsk.toString());
        }
        return ans.toString();
    }
}
于 2013-11-06T19:51:35.833 に答える
1

あなたのコードで:

public String toString() {
        // Not finished
        return "\nMarketDataDepth:"
        + Arrays.toString(BidAskList.Ask)
        + "\n";
    }

これはコンパイルさえすべきではありません。BidAskList's Askフィールドはnon-static。再びあなたの宣言:

protected BidAskList[] BidAskList;

ステートメントを混乱させBidAskList.Askます。コンパイラはBidAskList配列として読み取るため、エラーが発生します。can not find symbol : symbol variable Ask

于 2013-11-06T19:37:39.377 に答える