我想知道如何在自定义ArrayList中添加字符串值。Java:如何在自定义ArrayList中添加字符串值
我曾尝试下面的代码,但它给了我错误
ArrayList<MyCustom> aList = new ArrayList<MyCustom>();
aList.add("My Name");
,并试图这也;
aList.addAll("My Name");
aList.add((MyCustom)"My Name");
我想知道如何在自定义ArrayList中添加字符串值。Java:如何在自定义ArrayList中添加字符串值
我曾尝试下面的代码,但它给了我错误
ArrayList<MyCustom> aList = new ArrayList<MyCustom>();
aList.add("My Name");
,并试图这也;
aList.addAll("My Name");
aList.add((MyCustom)"My Name");
假设你MyCustom
类,并有物业说name
:
class MyCustom{
String name;
public setName(String name){
this.name=name;
}
.....
}
ArrayList<MyCustom> aList = new ArrayList<MyCustom>();
MyCustom myCustomObject=new MyCustom();
myCustomObject.setName("abc"); // here set the properties for your custom class object
aList.add(myCustomObject);
您已经创建了一个将包含MyCustom
类型的对象,所以,除非你的对象扩展字符串,你不能添加字符串给它的列表。
如果您希望将包含字符串和MyCustom对象,所以你必须创建列表像这样的列表:
List<Object> list = new ArrayList<Object>();
list.add(new MyCustom(...));
list.add("Some String");
使用原始类型是不好的,如果不是为了向后兼容,很可能会被Java禁止。使用'List
@KuluLimpa我意识到我忘记了当我输入答案。谢谢。 – Hunsu 2014-10-04 19:12:16
正如前面提到的,你的“MyCustom”既不是孩子,也不字符串的父(也不可能)。 这会使我们想到您的“MyCustom”对象或您希望它执行/执行的操作。
通过使用下面的代码,您将List中的对象类型限制为Mycustom,这很好。但是如果你必须在该列表中添加一个字符串,那么你应该删除这些类型。另外使用List接口是一种更好的做法。
ArrayList<MyCustom> aList = new ArrayList<MyCustom>();
List aList = new ArrayList(); //This will allow all objects to be added to list.
,或者根据您的需要进行MyCustom对象,你可以修改它使用如下: aList.add(new MyCustom("Name String"));
或 aList.add(new MyCustom().setName("Name String"));
的ArrayList是用Java泛型类型。意味着它可以存储任何对象。但要将对象存储在ArrayList中,我们需要指定类名,这意味着ArrayList只存储在声明数组列表时指定的类名。
你的情况
ArrayList<MyCustom> aList = new ArrayList<MyCustom>();
声明只具有MyCustom类对象,但
aList.add("My Name");
你存储的字符串值的数组列表。并且String类和MyCustom类之间没有关系。所以java编译器显示错误。要实现这一目标需要实现两种
ArrayList<String> aList = new ArrayList<String>();
aList.add("My Name");
或
Class MyCustom {
String field;
public void setField(String f) {
field=f;
}
public String getField() {
return field;
}
}
然后
ArrayList<MyCustom> aList = new ArrayList<MyCustom>();
aList.add(new MyCustom().setField("My Name"));
'String'不延长'MyCustom',让你在的地方使用'String' 'MyCustom'。顺便说一下,我很确定,'MyCustom'也不会将'String'扩展为'String'。 – 2014-10-04 11:02:22
@Dmitry Ginzburg对此有何其他选择? – 2014-10-04 11:02:57
这取决于你想达到什么。例如,你可以使用'ArrayList