我也不知道为什么, 想问一下.
我的问题,记录
我需要看: https://docs.oracle.com/javase/tutorial/java/generics/index.html
找到了答案: https://www.liaoxuefeng.com/wiki/1252599548343744/1265104600263968 泛型的类型擦除.
这个造成了一个问题:
consume records from Kafka, got a ClassCastException
private class KafkaMessage {}
private class AvroGeneric {}
class Record<K, V> {
K k;
V v;
}
interface DeSerialize<T> {
T deserializer();
}
class AvroDeserializer implements DeSerialize {
@Override
public Object deserializer() {
return new AvroGeneric();
}
}
@Test
public void testGenericDiff() {
// KafkaMessage is what I want.
Record<String, KafkaMessage> record = new Record<>();
// consume from xxx, get a AvroGenricObject.
DeSerialize<KafkaMessage> deSerialize = new AvroDeserializer();
record.v = deSerialize.deserializer();
// this is the problem, a AvroGeneric is assigned to a KafkaMessage variable.
KafkaMessage v = record.v;
System.out.println(v);
}