首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java和Swing

Java和Swing
EN

Stack Overflow用户
提问于 2012-05-13 16:51:28
回答 2查看 501关注 0票数 1

我还在学秋千和套接字,所以请容忍我。为了学习,我正在制作一个聊天客户机/服务器系统。现在,我在调查客户。我的课是

当程序运行时,我在Main中设置了一个Main对象,但是当ActLis需要使用这个套接字到send a message时,我不知道从Main获得它的好方法。我所做的是完全无效的,并且有更好的方法来设置它,还是有一种方法可以从我的SocketManager类中获得我不知道的Main对象?(我意识到我的代码中还有其他问题,但我只是想让套接字开始工作,我很难处理它们。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-13 17:14:25

你有几个选择:

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

代码语言:javascript
复制
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对象的引用

代码语言:javascript
复制
public class ActLis
{
    private SocketManager sm;

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

这些可能是最简单的方法来做到这一点。

票数 1
EN

Stack Overflow用户

发布于 2012-05-13 17:37:38

加入亨特·麦克米伦:

( 3)使主类,单例。不要让它有多个实例(如果我已经理解了您的目的,那么您不需要这个类的多个实例)。因此,只需创建该类的单个实例,并将其引用保留为其中的公共静态最终字段。(当然,不要让它从该类外部实例化:

代码语言:javascript
复制
    public class Main
    {
        public static final Main instance = new Main(/*args*/);

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

这样,您就可以在代码中的任何地方以Socket表单访问您的Main字段,而不存在任何问题。

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

https://stackoverflow.com/questions/10573482

复制
相关文章

相似问题

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