- 主题:问一个泛型时候,子类想调用父类的方法的问题
编译都不通过
【 在 zpfzhang 的大作中提到: 】
: 这样编译没问题了
: 执行会有问题吗?
: 发自「今日水木 on iOS」
: ...................
--
FROM 121.32.126.*
实在不行就再new一个父类的对象吧
【 在 YOUTH 的大作中提到: 】
: 改不了 父类是一个第三方的lib库。
: 不过改父类也没法改吧
--
FROM 121.32.126.*
泛型太坑了 debug也费劲
【 在 canper 的大作中提到: 】
:
: 编译都不通过
: --
: 这不过是细节问题,剧中博大精深的佛理已经感动了我
:
:
发自「今日水木 on iOS」
--
FROM 117.133.82.*
如果调用super.serialize(element),我还搞个子类干啥,
我的目的就是只序列化其中的一个属性
我前面也解释了:
这个问题在于:
如果Java不支持泛型,serialize这个方法的传入参数应该是Object(因为万物皆可序列化的)。
我这不会有问题,直接super.serialize() 不会报错。
引入了泛型,结果我没法这么写了。
【 在 sqzs 的大作中提到: 】
: 然后你super.serialize(element.getData()) ,这里肯定报错阿,改成super.serialize(element)肯定就不报错了
--
FROM 174.137.51.*
当你把范型设置为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.*
这个有什么问题呢,如果因为范型影响你调用父类,你又必须想只序列化Data Message的部分数据而已的话,继承做不了,用组合啊。
在你自己的范型类中写一个属性
JsonSerializationSchema<Map 或者Object> serialhelper = ……
在你的实现中,调用serialhelper.serialize(element.getData()) ;
--
FROM 119.109.102.*