用子类实例构造超类实例。

我想做的是像

SuperClass super = convertToSuperClassInstance(SubClass sub);

明明sub可以直接签到super,但我需要super应该是SuperClass(去除无用的subclass数据),由于其他持久化相关的事情,有什么技巧可以做到吗?

创建一个新的SuperClass,然后把所有的对象数据都签到它上面,我觉得这很不雅观 QAQ

解决方案:

一个subclass的实例总是拥有superclass的所有字段和方法。将subclass转为superclass(即? (SuperClass) subclass)不会删除数据,它只是告诉编译器应用超级类的规则,这意味着如果你试图访问subclass的数据,你会得到一个编译时错误。尽管如此,你仍然可以将其下传回子类或使用反射–数据就在那里。这是设计上的,你无法摆脱它。

如果你想真正 “删除 “子类的数据,你需要构造一个新的超类实例,而不是子类。最简单的方法就是在superclass中添加一个构造函数,把一个超类作为参数,然后把所有与超类相关的数据从超类中复制出来。

本文来自投稿,不代表实战宝典立场,如若转载,请注明出处:https://www.shizhanbaodian.com/6753.html

(0)
上一篇 2022年6月5日 下午9:32
下一篇 2022年6月5日 下午9:32

相关推荐

发表评论

登录后才能评论