1

Im trying to create classes and putting them into an 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));
        }

    }
}

was trying to use a string within the loop to change what i call each object

Below is the User class the constructor requires 3 strings that was the reason for the iConverts(iConverts, iConverts, iConverts) I was trying to name the object using a 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;
    }

}
4

5 回答 5

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(...));
    }

}
于 2013-10-28T18:13:53.050 回答
1

首先要记住 String 是不可变类型。一旦实例化,您将无法更改它。其次,构造函数只能调用一次。看起来好像您正在尝试第二次调用 String 构造函数。接下来,由于您使用泛型来声明您的列表将包含哪些类型的对象,因此您必须确保仅User将类型放入其中,否则编译器会给您一个错误。

所以你需要类似的东西

ArrayList<User> userList = new ArrayList<User>();
for(int i=0; i<10; i++){
   User user = new User("User" + i);
   userList.add(user);
}
于 2013-10-28T18:22:37.877 回答
1

您创建了一个包含 User 对象的 ArrayList,因此尝试这样做

UserList.add(iConvert(iConvert, iConvert, iConvert));

没有意义。

您可能想要这样做(如果您的 User 对象有 3 个字符串作为构造函数参数):

UserList.add(new User(iConvert, iConvert, iConvert));
于 2013-10-28T18:17:16.647 回答
1

一个对象默认有一个唯一的 id,不用担心。

只需将您的代码更改为。

userList.add(new User(iConvert));

并将 User 类的构造函数更改为:

public User(String iConvert) {...}
于 2013-10-28T18:21:13.790 回答
0

这行不通

        userList.add(iConvert(iConvert, iConvert, iConvert));

iConvert 是一个字符串实例,您正试图将其作为一种方法来调用。

于 2013-10-28T18:13:29.023 回答