在Java中实现混合类型列表

在Java中实现混合类型列表,java,arraylist,Java,Arraylist,我正在尝试编写一个混合类型列表,这样它就可以在同一个列表中保存整数和字符串。 我有一个customType类,它可以保存一个整数和一个字符串。 当我向列表中添加项目时,add函数会将元素放入相应的变量中 public class customType { private String str=""; private int integer=0; private String type=""; private Object

我正在尝试编写一个混合类型列表,这样它就可以在同一个列表中保存整数和字符串。 我有一个customType类,它可以保存一个整数和一个字符串。 当我向列表中添加项目时,add函数会将元素放入相应的变量中


public class customType {
    private String str="";
    private int integer=0;
    private String type="";
    private Object NumberFormatException;

    public customType(int integer){
        this.integer=integer;
        type="INTEGER";
    }

    public customType(String str){
        this.str=str;
        type="STRING";
    }
}

由于add函数的参数类型不同,我可以重载它

public class customTypeList {

private ArrayList<customType> elements = new ArrayList<customType>();

.
.
.

public void add(String str){
    elements.add(new customType(str));
    }

public void add(Integer integer){
    elements.add(new customType(integer));
    }
}
我知道,我可以为此使用两个ArrayList,但我想实现这样的混合类型列表。
有没有办法做到这一点?

例如,您可以创建一个“原始”列表,这是一个接受类型为
Object

newarraylist();
然后,当需要对整数或字符串进行特殊处理时,必须使用
instanceof
操作符检查对象是整数还是字符串,并相应地强制转换它

if(整数的对象实例){
整数i=(整数)对象;
}
第二种方法是为每种类型的对象创建不同的方法。即:

public int getInteger(inti);
公共字符串getString(inti);

你怎么知道你得到的是int还是String?这是不可能的,事实上我不确定你能提供这些方法中的任何一种,因为泛型列表也有方法
customType get(int index)
。因此,您所能做的就是提供像
getAsInt/getAsString
这样的方法,除了
get
,即返回类型上的方法重载之外,它被称为“重载”,而不是“重写”您在那里使用
add
get
所做的事情,不可能。为什么大家都想这样做?我忘了我可以创建新的ArrayList();然后我意识到它毕竟没有那么有用,因为当我需要使用列表时,我仍然需要相应地定义其他变量类型。所以我猜这不是java的做事方式。

public int get(int i){
    return elements.get(i).getInteger();
    }

public String get(int i){
    return elements.get(i).getStr();
    }