我正在使用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.out
是PrintStream
对象。花一些时间查看文档,特别是有关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
。