1

我还在学习挥杆和插座,所以请耐心等待。学习我正在制作一个聊天客户端/服务器系统。现在,我正在处理客户端。我的课是

我在程序运行时设置了一个SocketManager对象Main,但是当ActLis需要使用该套接字时,send a message我不知道从Main. 我正在做的事情是否完全无效并且有更好的设置方法,或者有没有办法从我不知道的班级中获取我的SocketManager对象?(我意识到我的代码中还有其他问题,但我只是想让套接字开始工作,我很难处理它们。)Main

4

2 回答 2

1

你有几个选择:

1) 在 Main 类中有一个 ActLis 对象,并将 Main 对 SocketManager 的引用传递给它

public class Main
{
   public static void main(String[] args)
   {
       ActList        a = new ActList(...);
       SocketManager sm = new SocketManager(...);

       a.sendMessageWithSocket(sm); //here you pass Main's reference to SocketManager 
   }                                //object to the ActLis class for use
} 

2)让ActLis类有一个SocketManager对象的引用,在它的构造函数中设置

public class ActLis
{
    private SocketManager sm;

    public ActLis(SocketManager sm)
    {
        this.sm = sm;
    }
}

这些可能是最简单的方法。

于 2012-05-13T17:14:25.977 回答
0

添加到亨特麦克​​米伦的:

3)制作主类,单例。id est 不要让它的实例超过一个(如果我已经理解了你的目的,你不需要这个类的多个实例。)所以只需创建这个类的一个实例并将其引用保留为公共静态最终字段。(当然不要让它从这个类之外实例化:

    public class Main
    {
        public static final Main instance = new Main(/*args*/);

        private Main(/*args*/)
        {
            //blah blah
        }
    }

这样,您就可以毫无问题地在代码中的任何位置以表单形式访问您的Socket字段。Main

于 2012-05-13T17:37:38.210 回答