我在这一点上迷失了。它可能很简单但是......我缩小了代码。我不相信我删除了任何相关内容。除了一个大缺陷外,一切看起来都很好。当我调用SetWhosOnline时,无论我的索引是什么,它似乎都设置了整个数组。
我在SetWhosOnline调用之前的监视环境窗口。
users[0].name = null
users[1].name = null
users[2].name = null
users[3].name = null
etc....
我打电话
SetWhosOnline("john",1);
我期待看到......
users[0].name = null
users[1].name = john
users[2].name = null
users[3].name = null
不幸的是 - 我得到的是......
users[0].name = john
users[1].name = john
users[2].name = john
users[3].name = john
我的头发变灰了!希望有人能为我找到答案....
CLASS 1
public class Login extends Activity {
public static who[] users = new who[100];
}
private static void SetWhosOnline(String user, int Index) {
users[index].SETname(user);
}
}
CLASS 2
public class who
{
private static boolean active;
private static boolean online;
private static String msg="";
private static int MsgCnt=0;
private static String name;
private static String IP;
private static Date stamp=new Date();
public void init(int index) {
this.active = false;
this.online = false;
this.name = "";
this.IP = "";
this.stamp = new Date();
} //USER
public final void SETname(String value) {
this.name = value;
}
答案 0 :(得分:11)
类中所有静态的字段,因此所有类的实例将共享相同的数据(即具有相同的名称,相同的IP等)。在这种情况下使用静态没有意义。