java - 不是抽象的,不会覆盖抽象方法 punctuate(long)

标签 java

我有以下接口(interface)实现:

package io.khinkali.topology;

import org.apache.kafka.streams.processor.*;

public class PathsProcessor<K, V> implements ProcessorSupplier {

  @Override
  public Processor get() {
    return new Processor() {

      private StateStore state;

      @Override
      public void init(ProcessorContext context) {
        this.state = context.getStateStore("myProcessorState");
        context.schedule(1000, PunctuationType.WALL_CLOCK_TIME, System.out::println);
      }

      @Override
      public void process(K key, V value) {

      }

      @Override
      public void close() {

      }
    };
  }
}

编译器提示:

[error] /home/developer/Desktop/microservices/bary-paths-stream/src/main/scala/io/khinkali/topology/PathsProcessor.java:9:1: <anonymous io.khinkali.topology.PathsProcessor$1> is not abstract and does not override abstract method punctuate(long) in org.apache.kafka.streams.processor.Processor
[error]     return new Processor<K, V>() {
[error] (compile:compileIncremental) javac returned non-zero exit code
[error] Total time: 2 s, completed Nov 21, 2017 9:46:47 AM

处理器如下所示:

public interface Processor<K, V> {

    void init(ProcessorContext context);
    void process(K key, V value);
    @Deprecated
    void punctuate(long timestamp);
    void close();
}

我做错了什么?

最佳答案

方法:

@Deprecated
void punctuate(long timestamp);

即使已弃用,仍然需要实现。

编辑:已弃用仅意味着该方法不应在新代码中使用,因为计划将来删除它。该注释旨在警告开发人员这一事实。然而,只要该方法存在于接口(interface)中,它就必须由任何实现来实现。我同意这可能会令人困惑:您不应该使用该方法,同时您必须实现它。这就是开发者的生活。

关于java - 不是抽象的,不会覆盖抽象方法 punctuate(long),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47408901/

相关文章:

java - 使用自定义 TableCellRenderer 的 Swing JTable

java - 打印ABC…的问题以及Java中的数字

java - JRuby warbler "compiled"命令在 Tomcat 中产生 ClassCastException

java - 在Java中: How to handshake a secured connection using Keystore and Truststore certificate?

java - 如何使用 Jackson 基于注释从对象中(反)序列化字段?

Java 重写方法问题

java - 复制到全局剪贴板不适用于 Ubuntu 中的 Java

java - 如何在 eclipse 中为 jar 附加 javadoc?

java - Java中如何将一个int转换为三个字节?

java - Apache Cordova 媒体捕获插件不显示视频记录倒计时时间