在开始编写这个简单程序之后,我遇到了一个我希望解释的逻辑错误。 toString()
方法当前正在打印geographylist.GeographyList@15db9742
测试类别
public static void main(String[] args) {
GeographyList g = new GeographyList();
g.addCountry ("Scotland");
g.addCountry ("Wales");
g.addCountry ("Ireland");
g.addCountry ("Italy");
System.out.println(g.toString());
ArrayList设置
public class GeographyList {
private ArrayList<String> countries;
public GeographyList(){
countries = new ArrayList<>();
}
public ArrayList<String> getCountries() {
return countries;
}
public String getCountry(int index){
return countries.get(index);
}
public void addCountry(String aCountry){
countries.add(aCountry);
System.out.println(aCountry + " added.");
}
最佳答案
它打印geographylist.GeographyList@15db9742
的原因是因为您没有打印ArrayList
。您正在打印GeographyList
。 GeographyList
可能包含ArrayList
,但这是偶然的。
从the toString
class继承的Object
的默认实现是打印程序包名称geographylist
,类名称GeographyList
和哈希码15db9742
。
如果要覆盖此行为you will need to override the behaviour of toString
,就像ArrayList
类将自己完成一样。
可能看起来像这样:
public class GeographyList {
//...
@Override
public String toString()
{
return countries.toString();
}
}
另外,由于您已经可以从课程中获取
ArrayList
,因此您可以调用System.out.println(g.getCountries().toString());
代替
System.out.println(g.toString());