java为嵌套类编写toString方法
我试图为一个内部有一个类的类编写一个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个字段的对象
编辑:
这就是我想要输出的数据类型:
{“TOP10BidTasks”:[ {“出价”:{“价格”:10.0,“大小”:2.0,“交换ID”:“智能”,“时间戳”:0}, “询问”:{“价格”:12.0,“大小”:2.0,“交换ID”:“智能”,“时间戳”:0}, {“出价”:{“价格”:0.0,“大小”:0.0,“交换ID”:“智能”,“时间戳”:0}, “询问”:{“价格”:13.0,“大小”:12.0,“交换ID”:“智能”,“时间戳”:0}] }
正如您所看到的,{“Price”:10.0,“Size”:2.0,“ExchangeID”:“SMART”,“timeStamp”:0}基本上是由我的MarketData类构造的4个字段
买卖基本上是一个对象(由两个Marketdata对象组成的内部类)。最后,整个对象是MarketDataListLevel2类
基本上,我希望我的toString方法能够输出数据,这涉及到这三个类
# 1 楼答案
我建议您将内部类BidAskList重命名为BidAskList。它并不是一个真正的列表,只是包含两个“出价”和“询问”字段。(重新命名可能有助于消除一些困惑。)
我还建议您将MarketData类型更改为double(或float,取决于您的数据)
您还应该将字段(如“出价”和“询问”)命名为以小写字母开头
下面有两个toString()方法。内部类中的一个将BidAsk打印为
[45.45 x 45.47]
。另一个在外部类中,使用foreach循环打印每个BidTask# 2 楼答案
在代码中:
这甚至不应该编译}字段为
BidAskList's
{non-static
。再次声明:混淆语句
BidAskList.Ask
。编译器将BidAskList
作为数组读取,因此将给出错误:can not find symbol : symbol variable Ask
# 3 楼答案
你可能想得太多了
根据定义,内部类是由类单独访问的东西,因此在大多数情况下,即使知道正在使用内部类,也不需要任何外部类。因此,正如上面提到的其他人一样,您不需要为内部类实现一个toString方法
但是,如果你真的想传递这些信息,你会把它设置成一个扩展类,反过来。。。您可以在内部类中实现toString,然后引用该内部类。在外部类的toString中使用toString()