- 主题:问一个泛型时候,子类想调用父类的方法的问题
DataMessage 不就是哥接口吗?element.getData()调用的是实现类的方法,调用父类方法什么意思?
--
FROM 36.110.168.*
JsonSerializationSchema<DataMessage>这里你已经指定泛型是DataMessage
所以super.serialize(这里必须是DataMessage对象)
--
FROM 36.110.168.*
然后你super.serialize(element.getData()) ,这里肯定报错阿,改成super.serialize(element)肯定就不报错了
--
FROM 36.110.168.*
当你把范型设置为DataMessage就决定了调用父类的序列化方法只能传入类型是DataMessage的实例。
我想到的是三种解决办法:
1. 范型类还是DataMessage你需要通过反射拿到父类的序列化工具mapper来序列化element.getData()
2. 把序列化类改成Object,然后super.serialize
(((DataMessage)element).getData())
这两种方法都不够优雅
3. 范型类还是DataMessage,不调用父类方法,自己在子类构造一个序列化工具mapper可以直接从父类copy,然后mapper.serialize(element.getData())
【 在 YOUTH 的大作中提到: 】
:
: 如果调用super.serialize(element),我还搞个子类干啥,
: 我的目的就是只序列化其中的一个属性
:
: 我前面也解释了:
: 这个问题在于:
: 如果Java不支持泛型,serialize这个方法的传入参数应该是Object(因为万物皆可序列化的)。
: ..................
发自「今日水木 on iPhone 12」
--
FROM 124.64.18.*
执行肯定没问题,有问题的可以把代码贴出来。
只不过这样不符合楼主的意图,他是想用父类的序列化工具来序列化element.getData()
【 在 zpfzhang 的大作中提到: 】
:
: 这样编译没问题了
: 执行会有问题吗?
:
: 发自「今日水木 on iOS」
: --
:
发自「今日水木 on iPhone 12」
--
FROM 124.64.18.*