我有一个我想在多个类中使用的对象类。基本上,我希望将此对象用作可以将信息转储到其中的位置,然后解压缩该信息。
让我们说例如我有5个班级
Class1将返回一个box对象。 - > Foo(对象)将存储框
Class2将返回一个蛇对象。 - > Foo(对象)将存储蛇
Class3将返回一个圆形对象。 - > Foo(对象)将存储圆圈。
Class4将返回一个食物对象。 - > Foo(对象)将存储食物
Class5将返回一个盒子,蛇,圆圈和食物对象。 - >解包Foo(对象)以返回框,蛇,圆和食物对象。
我该怎么做?如果可能,您可以为这种场景提供一些示例代码吗?如果需要进一步澄清,请告诉我。
谢谢!
答案 0 :(得分:0)
你可以这样做: 1-创建一个类,您将创建对象作为它的实例。 2-使这个类从Serializable类扩展(允许你冻结和冻结,你对象) 3-使用意图在您的活动之间导航并将您的对象添加为意图数据。
希望有所帮助 编辑 这与活动有关! 第二种方式
如果您使对象从像共享偏好(如
)扩展的类中调用其数据,该怎么办?从类A创建一个对象,其构造函数使用Sharedpreferences类来填充对象数据
答案 1 :(得分:0)
您可以使用interface
方法创建dump
,并使用您打算使用的所有课程实施interface
。如果interface
被称为Dumper
,则需要在所有打算使用它的类中实现它,如果可能的话。如果没有,例如,课程EvilGuy
不受您的控制,您只需创建一个EvilGuyWrapper
class
,其成员为EvilGuy
并实施Dumper
答案 2 :(得分:0)
像收藏家一样,对吧?
创建一个将累积对象的类:
public class EventCollector {
private List<Object> events = new ArrayList<>();
public void add(Object e) {
events.add(e);
}
}
将EventCollector实例传递给你的盒子,蛇,食物,圆形物体:
public class Circle {
private EventCollector ec;
public setEventCollector(EventCollector ec) {
this.ec = ec;
}
public void pack() {
ec.add(this);
}
}
对食物,盒子,蛇等做同样的事情......对所有这些进行打包方法。
所有对象最后都在EventCollectior中。
答案 3 :(得分:0)
在使用Java工作时,请记住该语言在编译时提供信息时非常倾向于使用。
您想要做的主要是在运行时确定这一点,并且您只能通过返回对象并将其转换为您期望的类来完成此操作。
在您的情况下,您需要拥有要存储的所有不同类型的公共超类,所有类型实现的接口或只使用Object。您可以将它存储在任何集合中,如ArrayList。
然后,当您获得对象时,您需要使用“instanceof”来查找您正在查看的内容,然后将其转换为适当的类型。
请注意,这很乏味且容易出错,您可能需要重新考虑并学习泛型。