我正在尝试在 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 接口时,如何使“两种方法具有相同的擦除但都不覆盖另一个”警告静音?
也许你有错误的导入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.
| 归档时间: |
|
| 查看次数: |
293 次 |
| 最近记录: |