You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Matthias J. Sax (Jira)" <ji...@apache.org> on 2019/10/18 17:05:00 UTC

[jira] [Resolved] (KAFKA-8297) Kafka Streams ConsumerRecordFactory yields difficult compiler error about generics

     [ https://issues.apache.org/jira/browse/KAFKA-8297?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Matthias J. Sax resolved KAFKA-8297.
------------------------------------
    Resolution: Fixed

Closing this ticket because the factory class was deprecated via https://issues.apache.org/jira/browse/KAFKA-8233 (KIP-470) in 2.4 release, and replaced with `TestInputTopic`.

> Kafka Streams ConsumerRecordFactory yields difficult compiler error about generics
> ----------------------------------------------------------------------------------
>
>                 Key: KAFKA-8297
>                 URL: https://issues.apache.org/jira/browse/KAFKA-8297
>             Project: Kafka
>          Issue Type: Bug
>          Components: streams
>            Reporter: Michael Drogalis
>            Priority: Minor
>             Fix For: 2.4.0
>
>
> When using the ConsumerRecordFactory, it's convenient to specify a default topic to create records with:
> {code:java}
> ConsumerRecordFactory<String, User> inputFactory = new ConsumerRecordFactory<>(inputTopic, keySerializer, valueSerializer);
> {code}
> However, when the factory is used to create a record with a String key:
> {code:java}
> inputFactory.create("any string", user)
> {code}
> Compilation fails with the following warning:
> {code:java}
> Ambiguous method call. Both:
> create(String, User) in ConsumerRecordFactory and
> create(String, User) in ConsumerRecordFactory match
> {code}
> At first glance, this is a really confusing error to see during compilation. What's happening is that there are two clashing signatures for `create`: create(K, V) and create(String, V). The latter signature represents a topic name.
> It seems like fixing this would require breaking the existing interface. This is a really opaque problem to hit though, and it would be great if we could avoid having users encounter this.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)