首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >序列化数组中的输出

序列化数组中的输出
EN

Stack Overflow用户
提问于 2014-10-07 01:59:14
回答 1查看 27关注 0票数 0

我有三个班:

Chatroom_Server.java,这是主要的类,它将首先超越。

代码语言:javascript
复制
public class Chatroom_Server {

     public static ChatroomHandler chatroom_handler;
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here

        try{
            final int serverPort = 9000;
            ServerSocket ser_sock = new ServerSocket(serverPort);
            chatroom_handler = new  ChatroomHandler();
            chatroom_handler.fetchChatroomList();
            for(int i=0;i<chatroom_handler.chatroomlist.size();i++){
                Chatroom_base obj = (Chatroom_base)chatroom_handler.chatroomlist.get(i);
                System.err.println(obj.chatroom_name);
            }

        }catch(Exception e){
            System.out.println(e);
        }
    }

}

第二类是ChatroomHandler.java

代码语言:javascript
复制
public class ChatroomHandler{
    public static ArrayList<Chatroom_base> chatroomlist;
    DbConnection dbcon;
    ChatroomHandler(){
        //load all chatrooms from the database and add those into arrayList
        dbcon = new DbConnection();
        chatroomlist = new ArrayList<Chatroom_base>();


    }
    public void fetchChatroomList(){
        ArrayList<String> chtrmlist = dbcon.getChatroomList();

        for(int i = 0;i<chtrmlist.size();i++){
            System.out.println("Chatroom name123:"+chtrmlist.get(i));
            Chatroom_base obj = new Chatroom_base();
            synchronized(obj) {
                obj.setChatroomname(chtrmlist.get(i));
                chatroomlist.add(obj);
            }

        }
    }
}

第三级是Chatroom_base.java:

代码语言:javascript
复制
public class Chatroom_base{
    public static ArrayList<Socket> chatSocketArray;
    public static ArrayList<String> userInfo;
    public static String chatroom_name;
    private static final long serialVersionUID = 123456;
    Chatroom_base(){
        userInfo = new ArrayList<String>();
        chatSocketArray = new ArrayList<Socket>();

    }
    public synchronized void setChatroomname(String tname){
        System.out.println("Chatroom name:"+tname);
        chatroom_name = tname;
    }
}

第四个类是DbConnection.java,我在其中完成了数据库连接部分。

我得到的输出在以下给定的顺序。

代码语言:javascript
复制
Chatroom name123:common
common3
common3
Chatroom name:common
common3
Chatroom name123:common2
Chatroom name:common2
Chatroom name123:common3
Chatroom name:common3

我想这就是序列化问题。进程正在提前获取资源。我想得到这样的输出:

代码语言:javascript
复制
   Chatroom name123:common
    Chatroom name:common
    Chatroom name123:common2
    Chatroom name:common2
    Chatroom name123:common3
    Chatroom name:common3
    common
    common2
    common3

关于java,我几乎没有什么想法。我能得到一些解决这个问题的想法或方向吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-07 02:16:22

您应该从以下字段中删除static

代码语言:javascript
复制
public class Chatroom_base{
    public static ArrayList<Socket> chatSocketArray;
    public static ArrayList<String> userInfo;
    public static String chatroom_name;

这些是对象字段,而不是类字段,因此它们不应该是static

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26227509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档