Java类文字工厂

时间:2019-03-28 19:17:14

标签: java

我正在尝试创建一个发出通用类型的类文字的工厂类:

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>>

0 个答案:

没有答案