是这样的 我来告诉你 ,定义了一个ArrayList的容器array 然后这个容器里只能放Goods类型的变量 GOOds这个类里面的对象
如果你不使用泛型 就会调用ArrayList他爷爷的toString 因为ArrayList没有 他爸爸也没有 只能他爷爷用toString
但是你使用泛型了 就会调用GOODs里面的toString 所以你只需要在GOODs里面覆盖一个toSTring方法就行
以ArrayList为例
ArrayList的父类AbstractList的父类AbstractCollection里面有实现toString()
public String toString() {
Iterator
if (!i.hasNext())
return "[]";
StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
E e = i.next();
sb.append(e == this ? "(this Collection)" : e);
if (!i.hasNext())
return sb.append(']').toString();
sb.append(", ");
}
}
因为你写的商品类没有重写toString
而为什么打印出来的地址,因为,你打印的时候默认调用商品类的父类Object类 而且打印调用的方法toString方法也是父类的 因此返回的是内存地址