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