在未传递的接口中获取对象引用

时间:2013-06-20 17:36:37

标签: java interface

目前,下面的代码给出了编译erorr,因为监听器不知道什么是smsTask。我需要一个侦听器中的smsTask实例。是否有可能没有在contruntor中传递它?如果我这样做似乎是不可能的:

.createTask(smsTask,new TaskCompleteListener(smsTask){...}

当前代码:

public void doStuff(){      
         SmartPhoneTask smsTask=createSmsTask();
         super.getSystem().createTask(smsTask,new TaskCompleteListener(){

            @Override
            public void onTaskComplete() {
                releaseResources(smsTask);//error.

            }});

    }

    private SmartPhoneTask createSmsTask() {
        return new SmartPhoneTask();
    }

的CreateTask:

void createTask(SmartPhoneTask task, TaskCompleteListener listener);

2 个答案:

答案 0 :(得分:3)

您可以声明变量final

 final SmartPhoneTask smsTask=createSmsTask();

答案 1 :(得分:0)

如果TaskCompleteListener在您的控制之下,您可以在Task方法中添加onTaskComplete()参数:

public void onTaskComplete(Task task) {
  releaseResources(task);
}

现在System必须在调用onTaskComplete()方法时将相应的任务传递给侦听器。

通过这种方式,您还可以将相同的TaskListener添加到多个任务中。