是否可以放置一个对象(可以是任何类,如原始类,盒子类或自定义类),并将其设置为自定义类?
例如;
boolean isPossible;
MyCustomClass mCustomClass;
mSet.put(isPossible);
mSet.put(mCustomClass);
然后像
一样访问它mSet.isPossible;
mSet.mCustomClass;
或类似的东西。 我需要一个非常用户友好的结构来设置在类之间共享的对象。
由于
答案 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