在实现 ConsumerSeekAware 接口时,如何使“两种方法具有相同的擦除但都不覆盖另一个”警告静音?

Jam*_*nes 2 java spring-kafka

我正在尝试在 Spring 中为 Kafka 消费者实现 ConsumerSeekAware 接口,但是当我尝试覆盖void onPartitionsAssigned(Map<TopicPartition, Long> assignments, ConsumerSeekCallback callback)void onIdleContainer(Map<TopicPartition, Long> assignments, ConsumerSeekCallback callback)在我的应用程序代码中时,我收到“两种方法具有相同的擦除但都不覆盖另一个”警告。

public static class MessageListener implements ConsumerSeekAware{
    ConsumerSeekCallback callback;

    @Override
    public void registerSeekCallback(ConsumerSeekCallback callback){
      this.callback = callback;
    }

    @Override
    public void onPartitionsAssigned(Map<TopicPartition, Long> assignments, ConsumerSeekCallback callback) {

    }

    @Override
    void onIdleContainer(Map<TopicPartition, Long> assignments, ConsumerSeekCallback callback) {

    }
}
Run Code Online (Sandbox Code Playgroud)

我确实知道此警告与需要覆盖的两种方法的 Map 参数中的泛型有关,但我不确定究竟是什么导致了此警告?

在实现 ConsumerSeekAware 接口时,如何使“两种方法具有相同的擦除但都不覆盖另一个”警告静音?

Gar*_*ell 5

也许你有错误的导入TopicPartition

它应该是

import org.apache.kafka.common.TopicPartition;

不是

import org.springframework.kafka.annotation.TopicPartition;

当我使用错误的导入时,我得到

Description Resource    Path    Location    Type
Name clash: The method onIdleContainer(Map<TopicPartition,Long>, ConsumerSeekAware.ConsumerSeekCallback) of type So48271796Application.Foo has the same erasure as onIdleContainer(Map<TopicPartition,Long>, ConsumerSeekAware.ConsumerSeekCallback) of type ConsumerSeekAware but does not override it So48271796Application.java  /so48271796/src/main/java/com/example   line 21 Java Problem
Run Code Online (Sandbox Code Playgroud)

如果您TopicPartition的班级中同时需要这两个s,则其中一个需要完全符合包的要求。

顺便说一句,如果您使用的是并发容器,则回调应保存在ThreadLocal.