我试图创建类并将它们放入ArrayList
import java.util.*;
public class UserGroup
{
ArrayList<User> userList = new ArrayList<User>();
public UserGroup()
{
}
public void addSampleData()
{
for (int i = 1; i < 11; i++)
{
String iConvert = "User" + Integer.toString(i);
System.out.println(iConvert);
userList.add(iConvert(iConvert, iConvert, iConvert));
}
}
}
试图在循环中使用一个字符串来改变我称之为每个对象的字符
下面是User类构造函数需要3个字符串,这是iConverts的原因(iConverts,iConverts,iConverts) 我试图使用String
命名对象public class User {
/*
* contains a username, usertype and names (constructor uses these)
* methods within getUsername, getUserType, getName and setUserType
*/
String username;
String userType;
String name;
public User(String username, String userType, String name)
{
}
protected String getUsername()
{
return username;
}
protected String getUserType()
{
return userType;
}
protected String getName()
{
return name;
}
protected void setUserType(String newType)
{
userType = newType;
}
}
答案 0 :(得分:2)
如果您将对象添加到ArrayList
,那么您可以将其设为:
userList.get(0);
userList.get(1);
userList.get(2);
因此没有必要更改名称。通过名称,这不是被称为类,您正在向ArrayList
添加对象。尝试做这样的事情。
public void addSampleData()
{
for (int i = 1; i < 11; i++)
{
userList.add(User(...));
}
}
答案 1 :(得分:1)
您创建了一个将保存User对象的ArrayList,因此尝试执行
UserList.add(iConvert(iConvert, iConvert, iConvert));
毫无意义。
您可能希望这样做(如果您的User对象有3个字符串作为构造函数参数):
UserList.add(new User(iConvert, iConvert, iConvert));
答案 2 :(得分:1)
默认情况下,一个对象是唯一的ID,不用担心。
只需将您的代码更改为。
userList.add(new User(iConvert));
并将User类的构造函数更改为:
public User(String iConvert) {...}
答案 3 :(得分:1)
首先要记住String是一个不可变类型。实例化后,您无法更改它。其次,构造函数只能被调用一次。看起来好像是第二次尝试调用String构造函数。接下来,由于您使用Generics来声明列表将包含哪些类型的ojbect,因此您必须确保仅将User
类型放入其中,否则编译器将给您一个错误。
所以你需要像
这样的东西ArrayList<User> userList = new ArrayList<User>();
for(int i=0; i<10; i++){
User user = new User("User" + i);
userList.add(user);
}
答案 4 :(得分:0)
这不起作用
userList.add(iConvert(iConvert, iConvert, iConvert));
iConvert是一个字符串实例,您试图将其称为方法。