日期:2014-05-20  浏览次数:20734 次

现在写了1个程序 共享变量出错 共享object出错 ,还望帮小弟看下,回答的好分更多
//===============第1个类====================
public   class   LoadingInformation   extends   Thread   {      
static   public   Vector   friendID=new   Vector();        
static   public   int   friendno;
```
``
public   LoadingInformation(){
        this.start();
        }

public   void   run(){
friendno=dis.readInt();
while(friendno> 0){
friendID.addElement(dis.readUTF());
friendno--;
}
}
//===========第2个类================
public   class   List1{
  public   FriendList()   {
System.out.println( "number   "+LoadingInformation.friendno)
for(int   i=0;i <LoadingInformation.friendno;i++){
        System.out.println(LoadingInformation.friendID.elementAt(i).toString());
  friendName[i]=LoadingInformation.friendID.elementAt(i).toString();
    System.out.println(LoadingInformation.friendID.elementAt(i).toString());
}
}

}


我在第2个类中要调用第1个类的值,我第1个类中的   Vector   friendID和   friendno都已设成了Static.我想在第2个类中共享第1个类的值,   但是在第2个类中引用时候测试出friendno=0和在第1个类的值不同(第1个类中friendno的值为3),怎么回事   还望高手指点

------解决方案--------------------
修改如下:
//===========第2个类================
public class FriendList{
public FriendList() {
System.out.println( "number "+LoadingInformation.friendno)//这里不会执行第一个类的run
LoadingInformation loadingInformation = new LoadingInformation();
for(int i=0;i <LoadingInformation.friendno;i++){
System.out.println(LoadingInformation.friendID.elementAt(i).toString());
friendName[i]=LoadingInformation.friendID.elementAt(i).toString();
System.out.println(LoadingInformation.friendID.elementAt(i).toString());
}
}

}

------解决方案--------------------
顶楼上的!!
要定义一个对象,激发LoadingInformation的构造函数才成.
调用静态成员,只初始化静态成员,并不调用构造函数
------解决方案--------------------
public void run(){
friendno=dis.readInt();
while(friendno> 0){
friendID.addElement(dis.readUTF());
friendno--; //执行之后friendno为0
}
改为:

public void run(){
friendno=dis.readInt();
int count = friendno; //添加记录数字
while(count> 0){
friendID.addElement(dis.readUTF());
count--; //执行之后,count为0
}

------解决方案--------------------
//===============第1个类====================
public class LoadingInformation extends Thread {
private Vector friendID=new Vector();
private int friendno;

public LoadingInformation(){
}

public void run(){
friendno=dis.readInt();
int count = friendno;
while(count > 0){
friendID.addElement(dis.readUTF());
count --;
}
}

public int getFriendNo(){
return friendno;
}
public Vector getFriendId(){
return friendID;
}
}
//===========第2个类================
public class FriendList{
public FriendList() {
LoadingInformation loadingInformation = new LoadingInformation();
loadingInformation .start();
int friendNumber = loadingInformation.getFriendNo();