我想做的是像
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