【问题标题】:How do i print a list of strings to the console and not addresses如何将字符串列表打印到控制台而不是地址
【发布时间】:2017-12-12 16:21:24
【问题描述】:

我创建了一个类,想调用 getTicketsCollection() 并让它在控制台显示下面的输出。

我的问题是如何让它打印列表而不打印地址(?)

这是完整的方法

public List<TicketInfo> getTicketsCollection() {


        Tickets Ticket = new Tickets();



          List<TicketInfo> tickets = Ticket.getTicketCollection();



          System.out.println("Company name: " + nextTicket.getCompanyName() + " Symbol: " + nextTicket.getCompanySymbol()


       }
          return tickets_today;    
}

并将其打印到控制台(类输出选项卡):

 [WSpackageWS.TicketInfo@177bea38, WSpackageWS.TicketInfo@7f132176, WSpackageWS.TicketInfo@6bca7e0d]

【问题讨论】:

  • 您正在打印 getSharesCollection() 但在其他方法中您有 getticketsCollection?
  • 覆盖TicketInfo中的toString方法
  • 有趣的是,您可能保留了唯一需要发布的课程 - TicketInfo。在该类上实现一个 toString 方法。

标签: java xml list web-services soap


【解决方案1】:

我的问题是如何让它打印列表(在 服务器选项卡)到类输出选项卡(而不是打印地址(?)

很明显,您在服务器控制台选项卡中得到低于输出,因为该代码在服务器上执行并且您正在打印TicketInfo 类的每个成员。

Info: 
Company name: Microsoft Symbol: Frog Currency: GBP Available tickets: 625 
Value per share: 500 DateOLU: 04/04/2017

这不会发生客户端代码,因为您正在尝试打印对象而不覆盖 toString

所以,有几件事:

  1. 您需要展示getSharesCollection() 方法的实现,该方法似乎返回List,但在您分享实现之前无法判断。

  2. 通过添加以下代码覆盖 toString () 方法

    public String toString ()
    {
        return "Company name: " + nextTicket.getCompanyName() + " Symbol: " + nextTicket.getCompanySymbol() + " Currency: " + nextTicket.getCurrency()
              + " Available shares: " + getAvailableShares() + " Value per share: " + getValuePerShare()
              + " DateOLU: " + getDateOLU();
    }
    

【讨论】:

  • 感谢解决了我的问题。也感谢其他花时间发表评论的人!
  • 不确定您能否帮我解决这个问题。但是 TicketInfo 是一个生成的 java-ws 类。 (来自 wsdl 文件/xsd 模式)当我覆盖 toString 方法时,一切正常。但是,当我重新编译我的项目时,对类的更改会恢复。有任何想法吗? @拉维
  • @j.piggens 你的说法自相矛盾,你说当我覆盖 toString 方法时一切正常,你已经编译和测试了。现在,您说当我重新编译我的项目时,对类的更改会恢复它是如何成为可能的。那你就做错了。
【解决方案2】:

在您使用System.out.println(getSharesCollection()); 的地方,您正在调用List 上的toString() 方法。

这就是为您提供[WSpackageWS.TicketInfo@177bea38, ...] 输出的原因。 @177bea38 是一个哈希码,它是默认的 toString() 实现(对于您的 TicketInfo 类)。

为了正确显示输出,您需要从 TicketInfo 类中提取所需的数据。

最好的方法是实现(并覆盖)TicketInfo 中的 toString() 方法。您可以在 getTicketsCollection() 方法中使用来自 System.out.println 的行来执行此操作。

【讨论】:

    【解决方案3】:

    现在编写正在打印对象的哈希码,因为 System.out.println(object) 调用了要打印其对象的类的 toString()。默认情况下,调用 java.lang.Object 类的 toString()。要更改它,请覆盖要打印其对象的类的 toString() .. 希望对你有帮助。。

    【讨论】:

      猜你喜欢
      • 2013-02-10
      • 2012-03-11
      • 1970-01-01
      • 1970-01-01
      • 2017-08-17
      • 2016-02-26
      • 2017-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多