我尝试了几个小时来解决我的问题,但我没有任何想法了。我的任务是完成几个课程,我已经完成了所有期望的课程。泛型抽象扩展错误
它只是允许更改代码的第一行。 我的问题是AutoDialer类。
自动拨号
public class AutoDialer<T> extends AbstractConnection implements Callable {
private Node<T> anchor;
/*
* insert an element at the first position
*/
public void insert(T element) {
anchor = new Node<T>(element, anchor);
}
/*
* call call() method on all elements contained in the list
*/
public void callAll() {
Node<T> iterator = anchor;
while (iterator != null) {
iterator.getValue().call();
iterator = iterator.getNext();
}
}
}
测试
public class Test
private static void test1() {
AutoDialer<Person> dialer = new AutoDialer<Person>();
dialer.insert(new Person("Mrs. X"));
dialer.insert(new Person("Mr. Y"));
dialer.callAll();
}
private static void test2() {
AutoDialer<AbstractConnection> dialer = new AutoDialer<AbstractConnection>();
dialer.insert(new Mail(new Person("Mrs. X")));
dialer.insert(new Phone(new Person("Mr. Y")));
dialer.callAll();
}
public static void main(String[] args) {
test1();
test2();
}
}
AbstractConnection
public abstract class AbstractConnection {
public final String type;
private Person person;
protected AbstractConnection(String type, Person person) {
this.type = type;
this.person = person;
}
public Person getPerson() {
return person;
}
protected abstract void connect();
/*
* establish a connection (implemented in subclass) and then call the person
*/
public void call() {
connect();
getPerson().call();
}
}
兄弟,不知道如何在这里使用代码行 – Nado
'AutoDialer'扩展'AbstractConnection'或者'T'吗?正如目前所写,它是前者,所以我不认为'iterator.getValue()。call()'应该工作 –
对我来说,'AbstractConnection'具有'Person'作为它的属性对我来说毫无意义。 –