Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何扩展AbstractScheduledService.Scheduler_Java_Guava - Fatal编程技术网

Java 如何扩展AbstractScheduledService.Scheduler

Java 如何扩展AbstractScheduledService.Scheduler,java,guava,Java,Guava,我正在尝试扩展AbstractScheduledService.Scheduler,以便使用一个在实例变量中存储初始延迟和周期的计划 我正在尝试以下内容 public class ScannerScheduler extends AbstractScheduledService.Scheduler { @Override public final Future<?> schedule(AbstractService as, ScheduledExe

我正在尝试扩展
AbstractScheduledService.Scheduler
,以便使用一个在实例变量中存储初始延迟和周期的计划

我正在尝试以下内容

public class ScannerScheduler extends AbstractScheduledService.Scheduler {

    @Override
    public final Future<?> schedule(AbstractService as, 
        ScheduledExecutorService ses, Runnable task) {
        Executors.newSingleThreadScheduledExecutor()
                 .scheduleAtFixedRate(task, 0, 1, TimeUnit.DAYS);
    }
}
公共类ScannerScheduler扩展了AbstractScheduledService.Scheduler{
@凌驾
公共最终未来计划(抽象服务as,
ScheduledExecutors服务(可运行任务){
Executors.newSingleThreadScheduledExecutor()
.scheduleAtFixedRate(任务,0,1,时间单位.天);
}
}
但编译器仍然抱怨:

ScannerScheduler不是抽象的,并且不重写抽象方法 中的计划(AbstractService、ScheduledExecutorService、Runnable) 调度程序


我遗漏了什么?

修订版

Scheduler
类有一个
private
构造函数,这意味着您不能在不修改Guava库代码的情况下扩展它

因此,您需要采用javadocs建议的替代方法

如果需要更多的灵活性,那么考虑子类<代码> CustomScheduler < /代码> ./P>



(在这种情况下,编译错误有点误导……但底线是,
extend
方法不起作用。)

修订版

Scheduler
类有一个
private
构造函数,这意味着您不能在不修改Guava库代码的情况下扩展它

因此,您需要采用javadocs建议的替代方法

如果需要更多的灵活性,那么考虑子类<代码> CustomScheduler < /代码> ./P>


(在这种情况下,编译错误有点误导……但底线是
extend
方法不起作用。)

方法
未来计划(AbstractService service,ScheduledExecutorService executor,
Runnable Runnable)
的AbstractScheduledService是最终版本,因此无法重写

请参见第393行:

从那里的代码来看,类
调度程序
中的相同方法签名似乎可以被覆盖,但不知道这是否有助于您:

new Scheduler() {
    @Override
    public Future<?> schedule(AbstractService service, ScheduledExecutorService executor,
        Runnable task) {
      return executor.scheduleWithFixedDelay(task, initialDelay, delay, unit);
    } 
  };
newscheduler(){
@凌驾
公共未来计划(AbstractService service、ScheduledExecutor service executor、,
可运行任务){
返回带有固定延迟(任务、初始延迟、延迟、单位)的executor.Schedule;
} 
};
方法
未来计划(AbstractService service,ScheduledExecutor service executor,
Runnable Runnable)
的AbstractScheduledService
是最终版本,因此无法重写

请参见第393行:

从那里的代码来看,类
调度程序
中的相同方法签名似乎可以被覆盖,但不知道这是否有助于您:

new Scheduler() {
    @Override
    public Future<?> schedule(AbstractService service, ScheduledExecutorService executor,
        Runnable task) {
      return executor.scheduleWithFixedDelay(task, initialDelay, delay, unit);
    } 
  };
newscheduler(){
@凌驾
公共未来计划(AbstractService service、ScheduledExecutor service executor、,
可运行任务){
返回带有固定延迟(任务、初始延迟、延迟、单位)的executor.Schedule;
} 
};

请发布一个链接,指向提供这个基类的任何东西的Javadoc或项目页面;我查了番石榴Javadocs,但没有在上面看到
时间表。@chrylis:在那里:@IgorRodriguez不在你提供的链接中,它不是。有一个类<代码> ActudioStopeService。调度器< /C>,但是它直接扩展了<代码>对象< /代码>,并且上面没有<代码>调度< /代码>方法。从类'javaDoc:“如果需要更多的灵活性,那么考虑子类抽象ApPraceService。CueStayer-Error。”请发布一个链接到Javadoc或任何提供这个基类的项目页面;我查了番石榴Javadocs,但没有在上面看到
时间表。@chrylis:在那里:@IgorRodriguez不在你提供的链接中,它不是。有一个类<代码> ActudioPractService。调度器< /C>,但是它直接扩展了<代码>对象< /代码>,并且上面没有<代码>调度< /代码>方法。从类'javaDoc:“如果需要更大的灵活性,那么考虑子类抽象ApPraceService。CueSuppEnter。”这是问题的一部分,但是错误消息表明编译器正在查找
schedule
方法,并抱怨它没有被覆盖。对于这个答案+1。您不打算对
调度程序
类型进行子类化,这只是编译器的工作。感谢您的有用回答!IMHO此类在调度方面过于复杂。我将重写我自己的。@Ste CustomScheduler子类被设计为易于使用(但显然我们至少在可发现性方面失败了)。您能告诉我您期望的功能是什么吗?这是问题的一部分,但错误消息表明编译器正在查找
schedule
方法,并抱怨它没有被重写。此答案为+1。您不打算对
调度程序
类型进行子类化,这只是编译器的工作。感谢您的有用回答!IMHO此类在调度方面过于复杂。我将重写我自己的。@Ste CustomScheduler子类被设计为易于使用(但显然我们至少在可发现性方面失败了)。你能告诉我你想要什么功能吗?谢谢!考虑到最后有限的调度能力(仅fixedDelay和fixedRate),类的设计有点麻烦。我将使用更简单的实现。谢谢!考虑到最后有限的调度能力(仅fixedDelay和fixedRate),类的设计有点麻烦。我将采用更简单的实现。