有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有一个要跨多个类使用的对象类。基本上,我希望这个对象被用作一个地方,我可以将信息转储到其中,然后解压这些信息

比如说,我有5节课

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

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

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

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

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

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


共 (4) 个答案

  1. # 1 楼答案

    你可以做到:

    1. 创建一个类,您将创建对象作为其实例
    2. 使该类从Serializable类扩展(允许您冻结,在冻结中,您可以创建对象)
    3. 使用意图在活动之间导航,并将对象添加为意图数据

    编辑
    这就是活动
    第二条路

    如果让对象从SharedReference扩展的类调用其数据,比如

    从类A创建一个对象,其构造函数使用SharedReferences类填充对象数据

  2. # 2 楼答案

    有点像收藏家,对吧

    创建一个将累积对象的类:

    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);
         }
    }
    

    对食物、盒子、蛇等也要这样做。。。对所有这些对象调用pack方法

    最后,所有对象都将位于EventCollectior中

  3. # 3 楼答案

    在使用Java时,请记住,该语言非常倾向于在编译时获得可用信息

    你要做的基本上是在运行时确定这一点,你只能通过返回对象并将其转换到你期望的类来实现

    在您的情况下,您需要有一个包含所有要存储的不同类型的公共超类,一个由所有类型实现的接口,或者只使用对象。您可以将其存储在任何此类集合中,如ArrayList

    然后,当你取回对象时,你需要使用“instanceof”来找出你在看什么,然后将其转换为适当的类型

    请注意,这是冗长且容易出错的,您可能需要重新考虑并学习泛型

  4. # 4 楼答案

    您可以使用dump方法创建interface,并使用所有要使用的类实现interface。如果你的interface被称为Dumper,如果可能的话,你需要在你打算使用它的所有类中实现它。如果没有,例如,类EvilGuy超出了您的控制范围,您可以简单地创建一个EvilGuyWrapper{},其中有一个EvilGuy的成员并实现Dumper