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

时间:2018-01-15 22:51:05

标签: java spring-kafka

我正在尝试在Spring for Kafka使用者中实现ConsumerSeekAware接口,但当我尝试覆盖void onPartitionsAssigned(Map<TopicPartition, Long> assignments, ConsumerSeekCallback callback)和{时,我得到“两种方法都有相同的擦除但是没有覆盖其他方法”警告{1}}在我的应用程序代码中。

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

我知道这个警告与Map参数中的泛型有关,需要重写的方法,但我不确定究竟是什么导致了这个警告?

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

1 个答案:

答案 0 :(得分:2)

也许您对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

如果您的课程中同时需要TopicPartition个,则其中一个需要完全符合该包。

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