我正在尝试创建一个发出通用类型的类文字的工厂类:
public class DeserializerClassFactory<T extends SpecificRecord> {
private final Class<T> clazz;
public DeserializerClassFactory(Class<T> clazz) {
this.clazz = clazz;
}
public Class<? extends Deserializer<T>> createDeserializerClass(Schema schema) {
class SpecificDeserializer implements Deserializer<T> {
private final KafkaAvroDeserializer kafkaAvroDeserializer = new KafkaAvroDeserializer();
@Override public void configure(final Map<String, ?> configs, final boolean isKey) {
kafkaAvroDeserializer.configure(configs, isKey);
}
@Override public T deserialize(final String topic, final byte[] output) {
if (output == null) {
throw new IllegalArgumentException("output cannot be null");
}
return (T) kafkaAvroDeserializer.deserialize(topic, output, schema);
}
@Override public void close() {
if (kafkaAvroDeserializer != null) {
kafkaAvroDeserializer.close();
}
}
}
return SpecificDeserializer.class;
}
}
在编译时我收到以下错误:
Error:(44, 74) java: incompatible types: java.lang.Class<SpecificDeserializer> cannot be converted to java.lang.Class<? extends org.apache.kafka.common.serialization.Deserializer<T>>