我正在编写一个带有名称或数字的Linked List类,然后将它们打印出来。我设法正常写了清单。这是我做的:
public String toString(){
return list.toString; //where list is the LinkedList I am calling
}
这样可以正常工作,并在添加4个这样的元素后返回我的列表:
[Joe, Jessica, Max, 5]
现在我试图将同样的方法转换为通用方法,所以我做了两件事。
这里我创建了集合对象:
private Collection<E> collection;
public MyLinkedListG(Collection<E> _collection) {
collection= _collection;
}
以下是我在集合中编写新的toString的方法:
public String toString(){
StringBuilder builder = new StringBuilder();
for(E e : collection) {
builder.append(e); //appends each string
}
return builder.toString();
}
问题是现在我的测试类不允许我调用之前创建的LinkedList对象:
MyLinkedListG x = new MyLinkedListG();
它声明我需要在参数内输入一个集合。我现在怎么称呼它?或者我完全错了吗?
如果不清楚,请告诉我,以便我尽快澄清。谢谢你提前。
答案 0 :(得分:0)
如果
,您只能使用空构造函数A)您尚未定义构造函数
或
B)如果您已明确定义了一个空构造函数。
http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.8.9
答案 1 :(得分:0)
据我所知,您的原始类可能没有包含构造函数。这意味着默认情况下提供了无参数构造函数new MyLinkedListG()
,这可能是您用来构造类实例的。
修改完成后,您添加了一个构造函数MyLinkedListG(Collection<E> _collection)
。现在,默认情况下不再提供无参数构造函数。如果要继续使用它,必须明确定义它。
在这种情况下,你的类可能有两个(或更多)构造函数,可能是这样的:
private Collection<E> collection;
public MyLinkedListG(Collection<E> _collection) {
collection= _collection;
}
public MyLinkedListG() {
collection=new LinkedList<E>();
}
现在您可以为对象使用任一构造函数。