如何打印类的每个实例的访问器的输出?

时间:2011-03-25 16:16:00

标签: java arrays class printing foreach

你将如何创建像这样的课程

public class tmUser {

    private String Username;
    private int wHours;
    static int numUsers;


    public tmUser(){
        Username = "";
        wHours = 0;
    }

    public tmUser(String U, int H){
        Username = U;
        wHours = H;
    }

    public void setUsername(String U){
        Username = U;
    }

    public void setwHours(int H){
        wHours = H;
    }

    public String getUsername(){
        return Username;
    }

    public int getwHours(){
        return wHours;
    }

    public static void initnumUsers(){
        numUsers = 0;
    }

    public static int getnumUsers(){
        return numUsers;
    }
}

然后打印所有“tmUser”实例Username变量?在每个循环中可能是一个?我希望像

这样的东西
for each(tmUser){
    System.out.println(Username);
}

这是一个程序中的菜单,显示所有创建的用户用户名。

先谢谢!

5 个答案:

答案 0 :(得分:1)

你几乎拥有它:

List<TmUser> tmUsers = ... 
for(TmUser user : tmUsers) {
    System.out.println(user.getUsername());
}

您还希望将tmUser大写为TmUser

答案 1 :(得分:0)

创建tmUser时,将其添加到

之类的集合中
List<TmUser> tmUsers = new ArrayList<TmUser>();

TmUser tmUser = new TmUser(username, hoursWorked);
tmUser.add(tmUser);

// later
for(TmUser tmUser: tumUsers) 
  System.out.println(tmUser.getUsername());

答案 2 :(得分:0)

您需要先将所有tmUser个实例存储在某处。你可以这样做:

public class tmUser {
...
public static List<tmUser> USERS = new ArrayList<tmUser>();

public tmUser() {
   ...
   USERS.add( this );
}

然后打印:

for (tmUser user : tmUser.USERS) {
    System.out.println(user.getUsername());
}

答案 3 :(得分:0)

目前的3个答案基本相同。只是想补充一点,如果类定义了返回用户名的toString(),则无需添加.getUsername()方法调用,因为System.out.println(Object)会自动调用{{1}方法。

这是否适用于您的用例是值得商榷的。 toString()方法通常会在对象上提供更多数据。

答案 4 :(得分:0)

正如已发布的答案所示,这将涉及维护某种数据结构,该结构包含对tmUser的所有实例(例如List<tmUser>)的引用。

这意味着对永远创建的每个实例的引用将始终保存在那里,它们永远不会被垃圾回收。当您决定不再需要实例时,可以显式删除它们,但是您必须跟踪所有实例的生命周期,并且基本上最终自己进行内存管理。