将动态对象放入数据结构

时间:2015-04-18 06:29:46

标签: java android data-structures architecture dataset

是否可以放置一个对象(可以是任何类,如原始类,盒子类或自定义类),并将其设置为自定义类?

例如;

boolean isPossible;
MyCustomClass mCustomClass;

mSet.put(isPossible);
mSet.put(mCustomClass);

然后像

一样访问它
mSet.isPossible;
mSet.mCustomClass;

或类似的东西。 我需要一个非常用户友好的结构来设置在类之间共享的对象。

由于

2 个答案:

答案 0 :(得分:1)

Visitor pattern可以帮助您

这是一个样板文件,但它允许您将不同的代码应用于不同类型的对象。

更现代的解决方案是使用Scala和模式匹配。

但是,你真的应该考虑坚持使用几个强制转换和instanceof-s。

另一种解决方案是将所有内容都放到单一课堂上,就像杰克逊的JsonNode那样。

答案 1 :(得分:1)

正如@ user1445898所述,使用强制转换和instanceof,您可以使用HashSet个通用Object实例,并根据需要根据需要进行转换/取消设置。

我只是把这个简单的例子放在一起:

import java.util.HashSet;

public class HashSetTest
{
  public static void main(String[] args)
  {
    HashSet<Object> set = new HashSet<Object>();

    CustomClass myObject = new CustomClass("Custom Class Instance");

    set.add(new Integer(1));
    set.add(new Integer(2));
    set.add(new Double(3.123));
    set.add(myObject);


    for (Object o: set){
      if (o instanceof Integer){
        int i = ((Integer)o);  //unbox
        System.out.println("Integer: " + i);

      }
      else if (o instanceof Double){
        double d = ((Double)o); //unbox
        System.out.println("Double: " + d);

      }
      else if (o instanceof CustomClass){
         System.out.println("CustomClass: " + myObject);

      }
    }

  }
}

public class CustomClass
{
  private String message;

  public CustomClass(String input)
  {
    message = input;
  }
  public String toString()
  {
    return message;
  }
}

输出:

CustomClass: Custom Class Instance
Integer: 1
Integer: 2
Double: 3.123