我正在使用RIOT Games APi并使用提供的示例代码,但是控制台显示:

net.rithms.riot.dto.Game.RecentGames@35d176f7


我不太确定,我写了一个不同的代码来请求用户ID,这很好用。

import net.rithms.riot.constant.Region;
import net.rithms.riot.constant.Season;
import net.rithms.riot.api.RiotApi;
import net.rithms.riot.api.RiotApiException;
import net.rithms.riot.dto.Game.RecentGames;

public class Example {

public static void main(String[] args) throws RiotApiException {

        RiotApi api = new RiotApi("KEY", Region.EUW);
        api.setSeason(Season.CURRENT);

        RecentGames recentGames = api.getRecentGames(api.getSummonerByName("Vodkamir Putkin").getId());

        System.out.println(recentGames);
    }
}


不确定这意味着什么或如何处理,根据API,它应该显示有关我最近参加的游戏的信息

最佳答案

System.out.println(recentGames);

这将隐式调用toString()对象上的recentGames方法。除非RecentGames类重写toString()方法,否则根据上面链接的文档,它将有效打印:


  getClass()。getName()+'@'+ Integer.toHexString(hashCode())


我不熟悉RIOT API,但是如果您想获取更多具体信息,最好的选择是看看可以对RecentGames对象调用的其他方法。



编辑:

只要您继续调用返回不覆盖toString()的对象的方法,就将不断遇到相同的问题。

System.outPrintStream对象。花一些时间查看文档,特别是有关print(...)println(...)方法的文档。

例如,如果传入的是int,则表示正在调用print(int)println(int)方法。如果传入String,则表示正在调用print(String)println(String)方法。如果传入原语,则正在调用相应的方法。如果您传入任何其他Object,则实际上是在这样做:

Object myObject;
String myObjectAsAString = myObject.toString(); // See above for what this evaluates to
                                                // if the class doesn't override toString()
System.out.println(myObjectAsAString);


如果您确实要打印出有意义的信息,则有两种选择:


一直在对象上调用方法,直到您希望找到一个类,该类的方法返回的String或可以打印出来的原语,或覆盖toString()
编写一些逻辑来解释您正在调用的方法的结果。例如,您可以检查System.out.println(recentGames.getGames());并打印recentGames.getGames().isEmpty()或类似的内容,而不是No recent games

10-04 12:16