如何从不同的类中获取确切的对象?

时间:2016-03-14 06:56:06

标签: java android

我创建了一个Object:

public class Info {
    private ArrayList<Object> list;

    public Info(){
        this.list = new ArrayList<>();
    }
    public Info getInfo(){
        return this;
    }
    public void put(final byte[] macAddress, final String name) {
        HashMap<byte[], String> map = new HashMap<>();
        map.put(macAddress,name);

       list.add(map);
    }
    public ArrayList getList(){
        return list;
    }

}

和我在班级中的新信息

Info info = new Info();
info.put(mAddress1,mName1);
info.put(mAddress2,mName2);

但我想从另一个类中获取此对象。我怎样才能得到这个对象?(我只创建/新建一次)

3 个答案:

答案 0 :(得分:2)

<强> 1。使Info类单例

    public class Info {
      public static Info info;
      private ArrayList<Object> list;

      public static Info getInstance(){
        if(info == null)
           info = new Info();
        return info;
      }    

      private Info(){
        this.list = new ArrayList<>();
      }

      public void put(final byte[] macAddress, final String name) {
        HashMap<byte[], String> map = new HashMap<>();
        map.put(macAddress,name);

        list.add(map);
      }

      public ArrayList getList(){
        return list;
      }
    }

<强> 2。使用

Info info = Info.getInstance();
info.put(mAddress1,mName1);
info.put(mAddress2,mName2);

答案 1 :(得分:0)

如果你想要同一个对象。尝试使用HashMap并实现equals和hashCode方法并基于key获取对象。 另一个想法

在另一个类中创建Info类的实例变量,并在参数化构造函数中创建实例时发送此info对象并分配该值

假设你另一个班级是ABC

Info info = new Info();
info.put(mAddress1,mName1);
info.put(mAddress2,mName2);
ABC abc=new ABC(info);


class ABC{
Info info;
public ABC(Info info)
this.info=info
}

答案 2 :(得分:0)

您需要阅读Singleton Class

  

单例模式是一种限制条件的设计模式   将类实例化为一个对象。这完全有用   需要一个对象来协调整个系统的行动

it's not an alternative to LSA.