我试了几个小时来解决我的问题,但我已经没有想法了。 我的任务是完成几个课程,我已经完成了所有期望。
只允许更改代码的第一行。 我的问题是AutoDialer类。
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();
}
}
答案 0 :(得分:0)
关注Test
课程后,您希望传递AbstractConnection
的任何子类作为AutoDialer
的类型。
但是根据您当前的课程声明,您告诉AutoDialer
本身延伸AbstractConnection
。
将其更改为:
public class AutoDialer<T extends AbstractConnection> implements Callable
我不知道你为什么要使用Callable接口,因为任何AbstractConnection
都必须实现call
方法。