如何跨多个类java传递相同的对象?

时间:2018-06-14 20:32:41

标签: java android android-studio

我有一个我想在多个类中使用的对象类。基本上,我希望将此对象用作可以将信息转储到其中的位置,然后解压缩该信息。

让我们说例如我有5个班级

Class1将返回一个box对象。 - > Foo(对象)将存储框

Class2将返回一个蛇对象。 - > Foo(对象)将存储蛇

Class3将返回一个圆形对象。 - > Foo(对象)将存储圆圈。

Class4将返回一个食物对象。 - > Foo(对象)将存储食物

Class5将返回一个盒子,蛇,圆圈和食物对象。 - >解包Foo(对象)以返回框,蛇,圆和食物对象。

我该怎么做?如果可能,您可以为这种场景提供一些示例代码吗?如果需要进一步澄清,请告诉我。

谢谢!

4 个答案:

答案 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”来查找您正在查看的内容,然后将其转换为适当的类型。

请注意,这很乏味且容易出错,您可能需要重新考虑并学习泛型。