В внешнем классе есть внутренний интерфейс, внутренний абстрактный класс и внутренний класс.Как использовать ссылочный параметр внутреннего абстрактного класса в JAVA
Когда я вызываю метод outerMethod() из OuterClass,
метод класса AKindBiz может печатать только содержимое списка.
Почему метод абстрактного класса (CommonKindBiz) ничего не может распечатать?
public class OuterClass {
public void outerMethod() throws Exception{
ArrayList<String> list = new ArrayList<String>();
list.add("1111");
list.add("2222");
KindBiz biz = new AKindBiz();
biz.execute(list);
}
public interface KindBiz
{
public void execute(ArrayList<String> inputList) throws Exception;
public void preExec(ArrayList<String> inputList) throws Exception;
public void exec(ArrayList<String> inputList) throws Exception;
public void postExec(ArrayList<String> inputList) throws Exception;
}
abstract public class CommonKindBiz implements KindBiz
{
public void execute(ArrayList<String> inputList) throws Exception{
System.out.println("KindBiz.CommonKindBiz.execute ### inputList1 : " + inputList); // Nothing printed.
this.preExec(inputList);
this.exec(inputList);
this.postExec(inputList);
}
public void preExec(ArrayList<String> inputList) throws Exception
{
System.out.println("KindBiz.CommonKindBiz.preExeC### inputList : " + inputList); // Nothing printed.
}
public abstract void exec(ArrayList<String> inputList) throws Exception;
public void postExec(ArrayList<String> inputList) throws Exception
{
System.out.println("KindBiz.CommonKindBiz.postExeC### inputList : " + inputList); // Nothing printed.
}
}
public class AKindBiz extends CommonKindBiz
{
@Override
public void exec(ArrayList<String> inputList) throws Exception
{
System.out.println("KindBiz.AKindBiz.exeC### inputList : " + inputList); // "1111", "2222" printed.
}
}
}
Заранее спасибо.
Что вы подразумеваете под словом "can not print anything"? Непонятно, что происходит не так. –
@JonSkeet С этим глубоким вложением интерфейсов, класса и абстрактного класса это не похоже на проблему с дизайном? =) –
@LittleChild: Ну, это далеко не идеальный вариант, но я хотел бы знать, с чем работает OP, и исправить это сначала, а затем исправить все остальное ... –